- Bug 1164338 - Move styles markers to be generated in DoProcessRestyles rather than when the Flush_Style queue is flushed. r=smaug,heycam (b8f62d25a) - pointer style (c8d305ae5) - Bug 1150783 - Use a special JitFrame to record when LazyLink stubs are on the stack. r=h4writer (999a5d8dd) - Bug 1050500: Add SpiderMonkey API for reporting JavaScript entry points. r=shu (86b990918) - Bug 1050500 followup: Annotate js.cpp "Exit()" method as "override". rs=ehsan (023d67749) - Bug 1050500 - Add callee information to Javascript timeline markers. r=smaug (a5c078bc0) - Bug 1050500 - add fields to ProfileTimelineStackFrame; r=smaug (7852af842) - Bug 944164 - Move a bunch of file-related stuff onto an os.file object, creating aliases from the old names, r=jorendorff (a746506c0) - Bug 1167860 - Make sure unboxed expandos are traced during minor GCs if the original unboxed object is converted to a native, r=terrence. (40552cef4) - Bug 1168667 - Immediately convert unboxed objects to natives in PreventExtensions, and convert unboxed arrays as well as unboxed plain objects when required, r=jandem. (34e1c1267) - Bug 1172150 - Remove bogus assert. (r=bz) (1138519fa) - Bug 1165794 - Correctly handle getter/setters like methods everywhere. r=efaust (69a5cef61) - Bug 1164778 - Make |super.prop| work inside heavyweight arrow functions. (r=shu) (2eaffe30d) - Bug 1168750 - SharedStubs: (part2) Rename registers used by baseline stubs for use with shared stubs, r=jandem (db8080b41) - pointer style (ae0ef8c24) - fix spaces (0b5a0f55d) - Bug 1168864 - Use mayResolve hook for addprop stubs. r=bhackett (14f89c938) - Bug 1166678 - Optimize Array.prototype.slice in Ion, r=jandem. (978215128) - Bug 1169611 - Rewrite IonBuilder::getPropTryConstant to not require a singleton result. r=bhackett (22c6137ea) - Bug 1169611 part 2 - Unbox getprop/getelem inputs based on Baseline feedback. r=bhackett (dd3d50088) - Bug 1148009; [webvr] Move gfx vr code to gfx/vr; r=jrmuizel (d3e0a12c7) - Bug 1148009; [webvr] Split out gfxVROculus from gfxVR, refactor VRHMDManager; r=jrmuizel (393030b10) - Bug 1148009; [webvr] Add Quaternion class to Moz2D; r=jrmuizel (85165c87c) - Bug 1144674; Implement HAL support for ROTATION_VECTOR and GAME_ROTATION_VECTOR sensors; r=snorp (482211f00) - Bug 1148009; Add support for Cardboard (and other rotation-sensor based VR) in Firefox for Android; r=jrmuizel (d3f78e657) - Bug 1157835: Remove the MSVC_ENABLE_PGO flag from the build system. r=glandium (a5cc2bb8f) - Bug 1170534 - Remove Visual Event Tracer. r=dougt (720c1bbc3) - Bug 1169967 - Add a forward declare for MIRGenerator. r=nbp (81c6d0492) - Bug 1154435 - [nsDumpUtil] Refine nsDumpUtils::OpenTempFile to make this function more flexible. r=dhylands (ca1e07244) - Bug 1154435 - [nsGZFileWriter] Add one more mode for writing a GZFile (Create/Append). r=froydnj (d0cc62270) - Bug 1165456 - Start converting name-resolution code to act upon kinds, not arities. r=shu (1162554f4) - fix let (3ad7122ea) - Bug 1165456 - Handle a bunch of simple known-arity kinds, by kind, when resolving nested function names. r=shu (82da03c43) - Bug 1165456 - Perform name resolution on more nodes by kind, not arity. r=shu (214062efa) - Bug 1165456 - Perform name resolution on additional nodes by kind. r=shu (c13147c9e) - Bug 1165456 - More name-resolution conversion for arrays and (tagged) template literals. r=shu (f0cd596e8) - Bug 1165456 - Extra bits of name-resolution conversion. r=shu (51d1045d7) - Bug 1165456 - Final bits of name-resolution by kind. r=shu (57fca554e) - Bug 1165456 - Remove dead code performing name resolution by arity. r=shu (b03db072a) - pointer style (ab86d2ca7) - Bug 1149510 - Initialize the MachineState with safe-bad pointers. r=jandem (7d35b51c9) - Bug 1149510 - Don't try to read the result object when doing in-place debug mode bailout in a for-of loop. (r=jandem) (40c1e23a7) - Bug 1156115 - Apply Bug 1135629 changes to the non-ion jit. r=nbp (332a21041) - pointer style (fab908ba9) - Bug 1155468 - Fix Register::GetName typedef issue with clang. r=jandem (5c7758d85) - Bug 1176633 - Add more Operand constructors to the none backend. r=nbp (1557fe119) - Bug 1160672 - Part 1/2 - Import VIXL 1.5-1.6. r=jbramley (c84218fec) - Bug 1160672 - Part 2/2 - Add Mozilla VIXL modifications. r=dougc (1fd1c7443) - Bug 1160672 - Follow-up - Add missing </p> tag. no_r=me (f783f0793) - Bug 1160672 - Follow-up - Comment out unlanded header on a CLOSED TREE. no_r=me (f65a68eed) - Bug 1166037 - Import ARM64 Baseline changes. r=djvj (5ddb53015) - Bug 1166527 - Import ARM64 Architecture and Assembler. r=nbp (999380926) - Bug 1077014 - MacroAssembler API. r=h4writer (78f470fa5) - Bug 1077014 - ARM assembler support for for-effect atomics. r=mjrosenb (a78d1f786) - Bug 1077014 - MacroAssembler API, for MIPS. r=rankov (d22cb063c) - Bug 1077014 - optimize atomics for effect. r=h4writer (5a0bf089c) - Bug 1170758 - Make non-debug GraphSpewer constructor explicit. r=nbp (2b7c1a90b) - Bug 1176631 - Predeclare TempAllocator for non-ion platforms. r=nbp (73cd914a7)
Graphite engine
What is Graphite?
Graphite is a system that can be used to create “smart fonts” capable of displaying writing systems with various complex behaviors. A smart font contains not only letter shapes but also additional instructions indicating how to combine and position the letters in complex ways.
Graphite was primarily developed to provide the flexibility needed for minority languages which often need to be written according to slightly different rules than well-known languages that use the same script.
Examples of complex script behaviors Graphite can handle include:
- contextual shaping
- ligatures
- reordering
- split glyphs
- bidirectionality
- stacking diacritics
- complex positioning
- shape aware kerning
- automatic diacritic collision avoidance
See examples of scripts with complex rendering.
Graphite system overview
The Graphite system consists of:
- A rule-based programming language Graphite Description Language (GDL) that can be used to describe the behavior of a writing system
- A compiler for that language
- A rendering engine that can serve as the layout component of a text-processing application
Graphite renders TrueType fonts that have been extended by means of compiling a GDL program.
Further technical information is available on the Graphite technical overview page.