From 0724910426d25ebe0cc96b4d71f35fb13120685f Mon Sep 17 00:00:00 2001 From: be5invis Date: Sat, 15 May 2021 21:45:09 -0700 Subject: [PATCH] * Add characters: - Measured Angle (`U+2221`). - Spherical Angle (`U+2222`). - Homothetic (`U+223B`). * Cleanup relation symbol code --- changes/7.0.0-preview.2.md | 6 +- .../auto-build/special-accented-letters.ptl | 2 +- font-src/glyphs/common/derivatives.ptl | 15 +- font-src/glyphs/letter/cyrillic/che.ptl | 2 +- font-src/glyphs/letter/cyrillic/dje.ptl | 2 +- font-src/glyphs/letter/cyrillic/el.ptl | 12 +- font-src/glyphs/letter/cyrillic/i.ptl | 4 +- font-src/glyphs/letter/cyrillic/small-yus.ptl | 16 +- font-src/glyphs/letter/greek/pi.ptl | 6 +- font-src/glyphs/letter/greek/upper-gamma.ptl | 12 +- font-src/glyphs/letter/latin-ext/long-s.ptl | 6 +- font-src/glyphs/letter/latin/c.ptl | 18 +- font-src/glyphs/letter/latin/k.ptl | 6 +- font-src/glyphs/letter/latin/lower-b.ptl | 8 +- font-src/glyphs/letter/latin/lower-d.ptl | 6 +- font-src/glyphs/letter/latin/lower-h.ptl | 6 +- font-src/glyphs/letter/latin/lower-i.ptl | 2 +- font-src/glyphs/letter/latin/lower-l.ptl | 2 +- font-src/glyphs/letter/latin/lower-n.ptl | 6 +- font-src/glyphs/letter/latin/lower-p.ptl | 2 +- font-src/glyphs/letter/latin/lower-r.ptl | 2 +- font-src/glyphs/letter/latin/lower-t.ptl | 2 +- font-src/glyphs/letter/latin/lower-y.ptl | 36 +- font-src/glyphs/letter/latin/s.ptl | 4 +- font-src/glyphs/letter/latin/u.ptl | 6 +- font-src/glyphs/letter/latin/upper-b.ptl | 6 +- font-src/glyphs/letter/latin/upper-d.ptl | 6 +- font-src/glyphs/letter/latin/upper-g.ptl | 2 +- font-src/glyphs/letter/latin/upper-h.ptl | 8 +- font-src/glyphs/letter/latin/upper-l.ptl | 12 +- font-src/glyphs/letter/latin/upper-m.ptl | 4 +- font-src/glyphs/letter/latin/upper-p.ptl | 2 +- font-src/glyphs/letter/latin/upper-r.ptl | 8 +- font-src/glyphs/letter/latin/upper-y.ptl | 2 +- font-src/glyphs/letter/latin/v.ptl | 8 +- font-src/glyphs/letter/latin/w.ptl | 14 +- font-src/glyphs/letter/latin/x.ptl | 12 +- font-src/glyphs/letter/shared.ptl | 6 +- font-src/glyphs/marks/index.ptl | 4 +- font-src/glyphs/symbol/ligation.ptl | 46 +- font-src/glyphs/symbol/math.ptl | 3 +- font-src/glyphs/symbol/math/arith.ptl | 2 +- .../{frame-and-geometry.ptl => frame.ptl} | 36 +- font-src/glyphs/symbol/math/geometry.ptl | 76 +++ font-src/glyphs/symbol/math/relation.ptl | 470 +++++++++++------- .../glyphs/symbol/punctuation/ellipsis.ptl | 8 +- .../glyphs/symbol/punctuation/paragraph.ptl | 8 +- .../glyphs/symbol/punctuation/percentages.ptl | 14 +- font-src/glyphs/symbol/punctuation/small.ptl | 2 +- font-src/meta/macros.ptl | 14 +- 50 files changed, 556 insertions(+), 406 deletions(-) rename font-src/glyphs/symbol/math/{frame-and-geometry.ptl => frame.ptl} (68%) create mode 100644 font-src/glyphs/symbol/math/geometry.ptl diff --git a/changes/7.0.0-preview.2.md b/changes/7.0.0-preview.2.md index d6be2cc1c..a423b35ca 100644 --- a/changes/7.0.0-preview.2.md +++ b/changes/7.0.0-preview.2.md @@ -1 +1,5 @@ - * Fix broken serifs of Cyrillic Ge (#995). \ No newline at end of file + * Fix broken serifs of Cyrillic Ge (#995). + * Add characters: + - Measured Angle (`U+2221`). + - Spherical Angle (`U+2222`). + - Homothetic (`U+223B`). diff --git a/font-src/glyphs/auto-build/special-accented-letters.ptl b/font-src/glyphs/auto-build/special-accented-letters.ptl index 0b155956a..e3932a39d 100644 --- a/font-src/glyphs/auto-build/special-accented-letters.ptl +++ b/font-src/glyphs/auto-build/special-accented-letters.ptl @@ -10,7 +10,7 @@ glyph-block Autobuild-DCaron : begin glyph-block-import Marks : markExtend glyph-block-import Letter-Latin-Lower-D - with-related-glyphs 'dcaron' 0x10f 'd' : lambda [src sel] : glyph-proc + derive-glyphs 'dcaron' 0x10f 'd' : lambda [src sel] : glyph-proc include : refer-glyph "commaAbove" include : Translate (Width + (RightSB - SB) / 2 + markExtend / 2) 0 local f : Widen {src} 0.95 1 diff --git a/font-src/glyphs/common/derivatives.ptl b/font-src/glyphs/common/derivatives.ptl index 80ef00edd..95758c646 100644 --- a/font-src/glyphs/common/derivatives.ptl +++ b/font-src/glyphs/common/derivatives.ptl @@ -50,7 +50,7 @@ glyph-block Common-Derivatives : begin if [not goal] : throw : new Error "Cannot find glyph '\(id)'" this.includeGlyph goal copyAnchors copyWidth - define [with-related-glyphs dstGid dstUnicode srcGid Fn] : begin + define [derive-glyphs dstGid dstUnicode srcGid Fn] : begin if [not : glyph-is-needed srcGid] : return nothing local glyphSrc : glyphStore.queryByName srcGid @@ -68,13 +68,16 @@ glyph-block Common-Derivatives : begin gr.set glyphDst relGidDst derivedGlyphIdMap.set relGidSrc relGidDst - define [build-related-composite dstGid dstUnicode srcGid] : begin + define [derive-composites dstGid dstUnicode srcGid] : begin if [not : glyph-is-needed srcGid] : return nothing local restComponents : {}.slice.call arguments 3 - return : with-related-glyphs dstGid dstUnicode srcGid : lambda [src sel] : glyph-proc + return : derive-glyphs dstGid dstUnicode srcGid : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS - foreach component [items-of restComponents] : include component + foreach component [items-of restComponents] : begin + if ([typeof component] === 'string') + : then : include [refer-glyph component] + : else : include component define [alias dstGid dstUnicode srcGid] : begin if [not dstGid] : throw : new Error "Target ID not specified" @@ -92,7 +95,7 @@ glyph-block Common-Derivatives : begin define [turned newid unicode id _x _y mark] : begin if [not newid] : throw : new Error "Target ID not specified" - with-related-glyphs newid unicode id + derive-glyphs newid unicode id lambda [src sel] : glyph-proc include [refer-glyph src] [if mark false AS_BASE] ALSO_METRICS if mark : include mark @@ -134,7 +137,7 @@ glyph-block Common-Derivatives : begin return : VCombine newid unicode id id spacing glyph-block-export select-variant orthographic-italic refer-glyph query-glyph - glyph-block-export with-related-glyphs build-related-composite + glyph-block-export derive-glyphs derive-composites glyph-block-export alias turned HDual HCombine VDual VCombine glyph-is-needed glyph-block-export HalfAdvance TurnMarks diff --git a/font-src/glyphs/letter/cyrillic/che.ptl b/font-src/glyphs/letter/cyrillic/che.ptl index 2d961f307..70598d89d 100644 --- a/font-src/glyphs/letter/cyrillic/che.ptl +++ b/font-src/glyphs/letter/cyrillic/che.ptl @@ -71,7 +71,7 @@ glyph-block Letter-Cyrillic-Che : begin create-glyph 0x4CC : composite-proc [refer-glyph 'cyrl/che.standard'] [CyrLeftDescender (RightSB - HVContrast * Stroke)] turned 'cyrl/Shha' 0x4BA 'cyrl/Che' Middle (CAP / 2) - build-related-composite 'cyrl/ShhaDescender' 0x526 'cyrl/Shha' [CyrDescender RightSB] + derive-composites 'cyrl/ShhaDescender' 0x526 'cyrl/Shha' [CyrDescender RightSB] define SwCheVBar : Math.min OverlayStroke (0.625 * (RightSB - SB - Stroke * 2 * HVContrast) / HVContrast) create-glyph 'cyrl/CheVBar' 0x4B8 : glyph-proc diff --git a/font-src/glyphs/letter/cyrillic/dje.ptl b/font-src/glyphs/letter/cyrillic/dje.ptl index 685c3fb0a..fef2a577c 100644 --- a/font-src/glyphs/letter/cyrillic/dje.ptl +++ b/font-src/glyphs/letter/cyrillic/dje.ptl @@ -45,6 +45,6 @@ glyph-block Letter-Cyrillic-Dje : begin include : DownwardLeftSerif xTopBarLeft CAP VJut swVJut include : DownwardRightSerif xTopBarRight CAP VJut swVJut - with-related-glyphs 'cyrl/dje' 0x452 'heng' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/dje' 0x452 'heng' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE include : HBarOverlay diff --git a/font-src/glyphs/letter/cyrillic/el.ptl b/font-src/glyphs/letter/cyrillic/el.ptl index e96880e39..b83714e54 100644 --- a/font-src/glyphs/letter/cyrillic/el.ptl +++ b/font-src/glyphs/letter/cyrillic/el.ptl @@ -60,14 +60,14 @@ glyph-block Letter-Cyrillic-El : begin include : MarkSet.e include : CyrElShape XH BODY-TAILED : if SLAB [if para.isItalic SLAB-TAILED-I SLAB-TAILED-U] SLAB-NONE - build-related-composite 'cyrl/ElDescender' 0x52E 'cyrl/El' [CyrDescender RightSB] - build-related-composite 'cyrl/elDescender' 0x52F 'cyrl/el.straight' [CyrDescender RightSB] + derive-composites 'cyrl/ElDescender' 0x52E 'cyrl/El' [CyrDescender RightSB] + derive-composites 'cyrl/elDescender' 0x52F 'cyrl/el.straight' [CyrDescender RightSB] - build-related-composite 'cyrl/ElTail' 0x4C5 'cyrl/El' [CyrTailDescender RightSB] - build-related-composite 'cyrl/elTail' 0x4C6 'cyrl/el.straight' [CyrTailDescender RightSB] + derive-composites 'cyrl/ElTail' 0x4C5 'cyrl/El' [CyrTailDescender RightSB] + derive-composites 'cyrl/elTail' 0x4C6 'cyrl/el.straight' [CyrTailDescender RightSB] - build-related-composite 'cyrl/ElHook' 0x512 'cyrl/El' [CyrHookDescender RightSB] - build-related-composite 'cyrl/elHook' 0x513 'cyrl/el.straight' [CyrHookDescender RightSB] + derive-composites 'cyrl/ElHook' 0x512 'cyrl/El' [CyrHookDescender RightSB] + derive-composites 'cyrl/elHook' 0x513 'cyrl/el.straight' [CyrHookDescender RightSB] select-variant 'cyrl/el' 0x43B alias 'cyrl/smcpEl' 0x1D2B 'cyrl/el' diff --git a/font-src/glyphs/letter/cyrillic/i.ptl b/font-src/glyphs/letter/cyrillic/i.ptl index 6441c3c58..c93b9aad4 100644 --- a/font-src/glyphs/letter/cyrillic/i.ptl +++ b/font-src/glyphs/letter/cyrillic/i.ptl @@ -49,5 +49,5 @@ glyph-block Letter-Cyrillic-I : begin alias 'cyrl/smcpI' 0x1D0E 'cyrl/i.upright' - build-related-composite 'cyrl/IShortTail' 0x48A 'cyrl/I' [refer-glyph 'breveAbove'] [CyrTailDescender RightSB] - build-related-composite 'cyrl/iShortTail.upright' null 'cyrl/i.upright' [refer-glyph 'breveAbove'] [CyrTailDescender RightSB] + derive-composites 'cyrl/IShortTail' 0x48A 'cyrl/I' [refer-glyph 'breveAbove'] [CyrTailDescender RightSB] + derive-composites 'cyrl/iShortTail.upright' null 'cyrl/i.upright' [refer-glyph 'breveAbove'] [CyrTailDescender RightSB] diff --git a/font-src/glyphs/letter/cyrillic/small-yus.ptl b/font-src/glyphs/letter/cyrillic/small-yus.ptl index d972e96f8..e5a5f3d86 100644 --- a/font-src/glyphs/letter/cyrillic/small-yus.ptl +++ b/font-src/glyphs/letter/cyrillic/small-yus.ptl @@ -30,15 +30,15 @@ glyph-block Letter-Cyrillic-SmallYus : begin local df : DivFrame para.diversityM 3 set-width df.width include : df.markSet.capital - create-derived 'cyrl/SmallYus.straight' : CyrSmallYusShape df CAP true - create-derived 'cyrl/SmallYus.curly' : CyrSmallYusShape df CAP false + create-forked-glyph 'cyrl/SmallYus.straight' : CyrSmallYusShape df CAP true + create-forked-glyph 'cyrl/SmallYus.curly' : CyrSmallYusShape df CAP false create-glyph : glyph-proc local df : DivFrame 1 3 set-width df.width include : df.markSet.e - create-derived 'cyrl/smallYus.straight' : CyrSmallYusShape df XH true - create-derived 'cyrl/smallYus.curly' : CyrSmallYusShape df XH false + create-forked-glyph 'cyrl/smallYus.straight' : CyrSmallYusShape df XH true + create-forked-glyph 'cyrl/smallYus.curly' : CyrSmallYusShape df XH false select-variant 'cyrl/SmallYus' 0x466 (follow -- 'grek/Lambda') select-variant 'cyrl/smallYus' 0x467 (follow -- 'grek/Lambda') @@ -65,15 +65,15 @@ glyph-block Letter-Cyrillic-SmallYus : begin local df : DivFrame para.diversityM 4 set-width df.width include : df.markSet.capital - create-derived 'cyrl/IotifiedSmallYus.straight' : CyrIotifiedSmallYusShape df CAP true - create-derived 'cyrl/IotifiedSmallYus.curly' : CyrIotifiedSmallYusShape df CAP false + create-forked-glyph 'cyrl/IotifiedSmallYus.straight' : CyrIotifiedSmallYusShape df CAP true + create-forked-glyph 'cyrl/IotifiedSmallYus.curly' : CyrIotifiedSmallYusShape df CAP false create-glyph : glyph-proc local df : DivFrame para.diversityM 4 set-width df.width include : df.markSet.e - create-derived 'cyrl/iotifiedSmallYus.straight' : CyrIotifiedSmallYusShape df XH true - create-derived 'cyrl/iotifiedSmallYus.curly' : CyrIotifiedSmallYusShape df XH false + create-forked-glyph 'cyrl/iotifiedSmallYus.straight' : CyrIotifiedSmallYusShape df XH true + create-forked-glyph 'cyrl/iotifiedSmallYus.curly' : CyrIotifiedSmallYusShape df XH false select-variant 'cyrl/IotifiedSmallYus' 0x468 (follow -- 'grek/Lambda') select-variant 'cyrl/iotifiedSmallYus' 0x469 (follow -- 'grek/Lambda') diff --git a/font-src/glyphs/letter/greek/pi.ptl b/font-src/glyphs/letter/greek/pi.ptl index bda2e396a..784a2b8a6 100644 --- a/font-src/glyphs/letter/greek/pi.ptl +++ b/font-src/glyphs/letter/greek/pi.ptl @@ -50,12 +50,12 @@ glyph-block Letter-Greek-Pi : begin include : MarkSet.e include : PiShape [DivFrame 1] XH 0 (shrinkRate -- 0) (doSerif -- SLAB) - with-related-glyphs 'cyrl/pe.SRB' null 'u' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/pe.SRB' null 'u' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE include : refer-glyph "macronAbove" - build-related-composite 'cyrl/PeDescender' 0x524 'cyrl/Pe' [CyrDescender RightSB] - build-related-composite 'cyrl/peDescender.upright' null 'cyrl/pe.upright' [CyrDescender RightSB] + derive-composites 'cyrl/PeDescender' 0x524 'cyrl/Pe' [CyrDescender RightSB] + derive-composites 'cyrl/peDescender.upright' null 'cyrl/pe.upright' [CyrDescender RightSB] create-glyph 'grek/pi' 0x3C0 : glyph-proc include : MarkSet.e diff --git a/font-src/glyphs/letter/greek/upper-gamma.ptl b/font-src/glyphs/letter/greek/upper-gamma.ptl index 35a7c4c70..4c9175644 100644 --- a/font-src/glyphs/letter/greek/upper-gamma.ptl +++ b/font-src/glyphs/letter/greek/upper-gamma.ptl @@ -82,7 +82,7 @@ glyph-block Letter-Greek-Upper-Gamma: begin alias 'grek/smcpGamma' 0x1D26 'cyrl/ghe.upright' select-variant 'cyrl/ge.upright' - with-related-glyphs 'cyrl/GheHook' 0x494 'cyrl/Ghe' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/GheHook' 0x494 'cyrl/Ghe' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : nShoulder left -- (GammaBarLeft + Stroke * HVContrast) @@ -93,7 +93,7 @@ glyph-block Letter-Greek-Upper-Gamma: begin smb -- SmoothB include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook - with-related-glyphs 'cyrl/gheHook' 0x495 'cyrl/ghe.upright' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/gheHook' 0x495 'cyrl/ghe.upright' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : nShoulder left -- (GammaBarLeft + Stroke * HVContrast) @@ -109,11 +109,11 @@ glyph-block Letter-Greek-Upper-Gamma: begin GammaBarLeft + Stroke * HVContrast + SB * 0.625 + 0.125 * (RightSB - SB) top * (1 - OverlayPos) - build-related-composite 'cyrl/Ghayn' 0x492 'cyrl/Ghe' [GhaynOverlayBar CAP] - build-related-composite 'cyrl/ghayn.upright' null 'cyrl/ghe.upright' [GhaynOverlayBar XH] + derive-composites 'cyrl/Ghayn' 0x492 'cyrl/Ghe' [GhaynOverlayBar CAP] + derive-composites 'cyrl/ghayn.upright' null 'cyrl/ghe.upright' [GhaynOverlayBar XH] - build-related-composite 'cyrl/GheStrokeHook' 0x4FA 'cyrl/GheDHook' [GhaynOverlayBar CAP] - build-related-composite 'cyrl/gheStrokeHook.upright' null 'cyrl/gheDHook.upright' [GhaynOverlayBar XH] + derive-composites 'cyrl/GheStrokeHook' 0x4FA 'cyrl/GheDHook' [GhaynOverlayBar CAP] + derive-composites 'cyrl/gheStrokeHook.upright' null 'cyrl/gheDHook.upright' [GhaynOverlayBar XH] create-glyph 'mathbb/grek/Gamma' 0x213E : glyph-proc include : MarkSet.capital diff --git a/font-src/glyphs/letter/latin-ext/long-s.ptl b/font-src/glyphs/letter/latin-ext/long-s.ptl index 2125dea29..e2879df20 100644 --- a/font-src/glyphs/letter/latin-ext/long-s.ptl +++ b/font-src/glyphs/letter/latin-ext/long-s.ptl @@ -56,7 +56,7 @@ glyph-block Letter-Latin-Long-S : begin if SLAB : begin include : tagged 'serifLB' : CenterBottomSerif (m + HalfStroke * HVContrast + RBalance * 0.35) 0 (Jut + RBalance * 0.65) - create-derived 'longsbar.upright.standard' : glyph-proc + create-forked-glyph 'longsbar.upright.standard' : glyph-proc include : HOverlayBar m + HalfStroke * HVContrast - LongJut * 0.75 m + HalfStroke * HVContrast + LongJut * 0.75 @@ -77,7 +77,7 @@ glyph-block Letter-Latin-Long-S : begin if SLAB : begin include : tagged 'serifLB' : CenterBottomSerif (m + HalfStroke * HVContrast + RBalance * 0.35) 0 (Jut + RBalance * 0.65) - create-derived 'longsbar.upright.flatHook' : glyph-proc + create-forked-glyph 'longsbar.upright.flatHook' : glyph-proc include : HOverlayBar m + HalfStroke * HVContrast - LongJut * 0.75 m + HalfStroke * HVContrast + LongJut * 0.75 @@ -87,7 +87,7 @@ glyph-block Letter-Latin-Long-S : begin include : MarkSet.if include : LongSShape CAP Descender (HookX + 0.25 * Stroke) Hook - create-derived 'longsbar.italic' : glyph-proc + create-forked-glyph 'longsbar.italic' : glyph-proc include : HOverlayBar Middle - LongJut * 0.75 Middle + LongJut * 0.75 diff --git a/font-src/glyphs/letter/latin/c.ptl b/font-src/glyphs/letter/latin/c.ptl index 81616999a..68b29d18f 100644 --- a/font-src/glyphs/letter/latin/c.ptl +++ b/font-src/glyphs/letter/latin/c.ptl @@ -274,7 +274,7 @@ glyph-block Letter-Latin-C : begin CShapeOutline [DivFrame 1] XH 0 SmallSmoothA SmallSmoothB BBS VBarLeft (SB + BBD + OX) 0 CAP BBS - with-related-glyphs 'currency/euroSign' 0x20AC 'C' : lambda [src sel] : glyph-proc + derive-glyphs 'currency/euroSign' 0x20AC 'C' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.7] (CAP * 0.4) include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.7] (CAP * 0.6) @@ -364,38 +364,38 @@ glyph-block Letter-Latin-C : begin include : SlabCShapeT dispiro 0 [DivFrame 1] XH 0 SmallSmoothA SmallSmoothB Stroke true include : ArcStartHookTop RightSB XH Stroke HookX Hook - with-related-glyphs 'Cbar' 0xA792 'C' : lambda [src sel] : glyph-proc + derive-glyphs 'Cbar' 0xA792 'C' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (CAP * OverlayPos) - with-related-glyphs 'cbar' 0xA793 'c' : lambda [src sel] : glyph-proc + derive-glyphs 'cbar' 0xA793 'c' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (XH * OverlayPos) - with-related-glyphs 'cyrl/E' 0x42D 'revC' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/E' 0x42D 'revC' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : HBar [mix SB RightSB 0.25] RightSB (CAP / 2) - with-related-glyphs 'cyrl/e' 0x44D 'revSmallC' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/e' 0x44D 'revSmallC' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : HBar [mix SB RightSB 0.25] RightSB (XH / 2) - with-related-glyphs 'cyrl/Ye' 0x404 'C' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/Ye' 0x404 'C' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : HBar SB [mix RightSB SB 0.25] (CAP / 2) [AdviceStroke2 2 4 CAP] - with-related-glyphs 'cyrl/ye' 0x454 'c' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/ye' 0x454 'c' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : HBar SB [mix RightSB SB 0.25] (XH / 2) [AdviceStroke2 2 4 XH] - with-related-glyphs 'cyrl/Koppa' 0x480 'CTopSerifOnly' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/Koppa' 0x480 'CTopSerifOnly' : lambda [src sel] : glyph-proc include : MarkSet.if include : union [VBarRight (Middle + Stroke * HVContrast) Descender (Stroke / 2)] : difference refer-glyph src Rect (CAP / 2) Descender (Middle + Stroke * HVContrast) (Width * 4) Rect (XH / 2) [mix Stroke Hook 0.5] Middle (Width * 4) - with-related-glyphs 'cyrl/koppa' 0x481 'cTopSerifOnly' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/koppa' 0x481 'cTopSerifOnly' : lambda [src sel] : glyph-proc include : MarkSet.p include : union [VBarRight (Middle + Stroke * HVContrast) Descender (Stroke / 2)] : difference refer-glyph src diff --git a/font-src/glyphs/letter/latin/k.ptl b/font-src/glyphs/letter/latin/k.ptl index d3c018e9a..90f2d9da7 100644 --- a/font-src/glyphs/letter/latin/k.ptl +++ b/font-src/glyphs/letter/latin/k.ptl @@ -285,7 +285,7 @@ glyph-block Letter-Latin-K : begin create-glyph "K.\(suffix)" : glyph-proc include : MarkSet.capital include : KBaseShape Stroke CAP - create-derived "KDescender.\(suffix)" : KCyrlNormalDescender CAP straightBar slabTop slabLegs + create-forked-glyph "KDescender.\(suffix)" : KCyrlNormalDescender CAP straightBar slabTop slabLegs create-glyph "KBar.\(suffix)" : glyph-proc include [refer-glyph "K.\(suffix)"] AS_BASE ALSO_METRICS @@ -305,7 +305,7 @@ glyph-block Letter-Latin-K : begin create-glyph "smcpK.\(suffix)" : glyph-proc include : MarkSet.e include : KBaseShape Stroke XH - create-derived "cyrl/kaDescender.\(suffix)" : KCyrlNormalDescender XH straightBar slabTop slabLegs + create-forked-glyph "cyrl/kaDescender.\(suffix)" : KCyrlNormalDescender XH straightBar slabTop slabLegs create-glyph "smcpKVBar.\(suffix)" : glyph-proc include : MarkSet.e @@ -381,7 +381,7 @@ glyph-block Letter-Latin-K : begin if slabTop : include : LeftwardTopSerif (SB + [KBalance slabTop straightBar]) CAP SideJut if slabBot : include : tagged 'serifLB' CenterBottomSerif (SB + [KBalance slabTop straightBar] + HalfStroke * HVContrast) 0 Jut - create-derived "kDescender.\(suffix)" : KCyrlNormalDescender XH straightBar slabTop slabLegs + create-forked-glyph "kDescender.\(suffix)" : KCyrlNormalDescender XH straightBar slabTop slabLegs create-glyph "kBar.\(suffix)" : glyph-proc include [refer-glyph "k.\(suffix)"] AS_BASE ALSO_METRICS diff --git a/font-src/glyphs/letter/latin/lower-b.ptl b/font-src/glyphs/letter/latin/lower-b.ptl index f7a6a8d1c..364a5ee9d 100644 --- a/font-src/glyphs/letter/latin/lower-b.ptl +++ b/font-src/glyphs/letter/latin/lower-b.ptl @@ -76,22 +76,22 @@ glyph-block Letter-Latin-Lower-B : begin select-variant 'bhooktop' 0x253 - with-related-glyphs 'bbar' 0x180 'b' : lambda [src sel] : glyph-proc + derive-glyphs 'bbar' 0x180 'b' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.5] [mix XH CAP 0.45] - with-related-glyphs 'bdot' 0x1E03 'b' : lambda [src sel] : glyph-proc + derive-glyphs 'bdot' 0x1E03 'b' : lambda [src sel] : glyph-proc include : refer-glyph "dotAbove" include : Translate (Width + HalfStroke) 0 include [refer-glyph src] AS_BASE - with-related-glyphs 'latinbe' 0x183 'b' : lambda [src sel] : glyph-proc + derive-glyphs 'latinbe' 0x183 'b' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE include : HBarTop (SB - O) [mix SB RightSB 0.9] CAP if SLAB : begin include : DownwardRightSerif [mix SB RightSB 0.9] CAP VJut - with-related-glyphs 'zhuangtonesix' 0x185 'b' : lambda [src sel] : glyph-proc + derive-glyphs 'zhuangtonesix' 0x185 'b' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE eject-contour 'serifLT' local s : Math.max (XH * 0.1) Stroke diff --git a/font-src/glyphs/letter/latin/lower-d.ptl b/font-src/glyphs/letter/latin/lower-d.ptl index 2367c1ad5..914fd16d2 100644 --- a/font-src/glyphs/letter/latin/lower-d.ptl +++ b/font-src/glyphs/letter/latin/lower-d.ptl @@ -62,7 +62,7 @@ glyph-block Letter-Latin-Lower-D : begin select-variant 'd' 'd' - with-related-glyphs 'dcroat' 0x111 'd' : lambda [src sel] : glyph-proc + derive-glyphs 'dcroat' 0x111 'd' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE include : HBar [mix (SB + Stroke) (RightSB - Stroke) 0.5] [mix RightSB Width 0.7] [mix XH CAP 0.45] OverlayStroke @@ -124,12 +124,12 @@ glyph-block Letter-Latin-Lower-D : begin refer-glyph 'dhooktop.toothedSerifless' refer-glyph 'rtailBR' - with-related-glyphs 'ddot' 0x1E0B 'd' : lambda [src sel] : glyph-proc + derive-glyphs 'ddot' 0x1E0B 'd' : lambda [src sel] : glyph-proc include : refer-glyph "dotAbove" include : Translate (Width - HalfStroke) 0 include [refer-glyph src] AS_BASE - with-related-glyphs 'latinde' 0x18C 'd' : lambda [src sel] : glyph-proc + derive-glyphs 'latinde' 0x18C 'd' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE include : HBarTop [mix RightSB SB 0.9] (RightSB + O) CAP if SLAB : begin diff --git a/font-src/glyphs/letter/latin/lower-h.ptl b/font-src/glyphs/letter/latin/lower-h.ptl index 161ad2b3d..e4e3736bc 100644 --- a/font-src/glyphs/letter/latin/lower-h.ptl +++ b/font-src/glyphs/letter/latin/lower-h.ptl @@ -73,9 +73,9 @@ glyph-block Letter-Latin-Lower-H : begin select-variant 'h' 'h' select-variant 'cyrl/shha' 0x4BB (shapeFrom -- 'h') - build-related-composite 'cyrl/shhaDescender' 0x527 'cyrl/shha' [CyrDescender RightSB] + derive-composites 'cyrl/shhaDescender' 0x527 'cyrl/shha' [CyrDescender RightSB] - with-related-glyphs 'hCedilla' 0x1E29 'h' : lambda [src sel] : glyph-proc + derive-glyphs 'hCedilla' 0x1E29 'h' : lambda [src sel] : glyph-proc include [refer-glyph 'cedillaBelow'] include : Translate (Width + SB - Middle + HalfStroke * HVContrast) 0 include [refer-glyph src] @@ -169,7 +169,7 @@ glyph-block Letter-Latin-Lower-H : begin corner (SB + HalfStroke * HVContrast) yOverlay corner xOverlayEnd yOverlay - with-related-glyphs 'hbar' 0x127 'h' : lambda [src sel] : glyph-proc + derive-glyphs 'hbar' 0x127 'h' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE include : HBarOverlay diff --git a/font-src/glyphs/letter/latin/lower-i.ptl b/font-src/glyphs/letter/latin/lower-i.ptl index 6ab7cecd7..45369b0b4 100644 --- a/font-src/glyphs/letter/latin/lower-i.ptl +++ b/font-src/glyphs/letter/latin/lower-i.ptl @@ -274,7 +274,7 @@ glyph-block Letter-Latin-Lower-I : begin turned 'turni' 0x1D09 'i' HalfAdvance (XH / 2) [TurnMarks 'p'] - with-related-glyphs 'cyrl/ghe.SRB' null 'dotlessi' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/ghe.SRB' null 'dotlessi' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : refer-glyph "macronAbove" diff --git a/font-src/glyphs/letter/latin/lower-l.ptl b/font-src/glyphs/letter/latin/lower-l.ptl index 2e4f270ef..1a2857a78 100644 --- a/font-src/glyphs/letter/latin/lower-l.ptl +++ b/font-src/glyphs/letter/latin/lower-l.ptl @@ -148,7 +148,7 @@ glyph-block Letter-Latin-Lower-L : begin CreateCommaCaronComposition 'l' 'lcaron' 0x13E - with-related-glyphs 'lSlash' 0x142 'l' : lambda [src sel] : glyph-proc + derive-glyphs 'lSlash' 0x142 'l' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS local anchor currentGlyph.baseAnchors.overlay local stretch : Math.sqrt (currentGlyph.advanceWidth / UPM * 2) diff --git a/font-src/glyphs/letter/latin/lower-n.ptl b/font-src/glyphs/letter/latin/lower-n.ptl index 2b56de879..6c06ca498 100644 --- a/font-src/glyphs/letter/latin/lower-n.ptl +++ b/font-src/glyphs/letter/latin/lower-n.ptl @@ -167,10 +167,10 @@ glyph-block Letter-Latin-Lower-N : begin select-variant 'cyrl/peItalicDescBase' (shapeFrom -- 'n') alias 'cyrl/pe.BGR' null 'n' - build-related-composite 'cyrl/peDescender.italic' null 'cyrl/peItalicDescBase' [CyrDescender RightSB] + derive-composites 'cyrl/peDescender.italic' null 'cyrl/peItalicDescBase' [CyrDescender RightSB] - with-related-glyphs 'nApostrophe' 0x149 'n' : lambda [src srl] : glyph-proc + derive-glyphs 'nApostrophe' 0x149 'n' : lambda [src srl] : glyph-proc include : refer-glyph "commaAbove" include : Translate (Width + SB - Middle) 0 include [refer-glyph src] AS_BASE @@ -214,7 +214,7 @@ glyph-block Letter-Latin-Lower-N : begin include : VerticalHook (RightSB - HalfStroke * HVContrast) (Hook + HalfStroke + O) [Math.max ((SB - RightSB) / 2 + HalfStroke) (-HookX)] Hook include : VBar (SB + HalfStroke * HVContrast) 0 CAP - with-related-glyphs 'nltail' 0x272 'n' : lambda [src srl] : glyph-proc + derive-glyphs 'nltail' 0x272 'n' : lambda [src srl] : glyph-proc include [refer-glyph src] AS_BASE eject-contour 'serifLB' include : VerticalHook (SB + HalfStroke * HVContrast) 0 (-HookX) Hook diff --git a/font-src/glyphs/letter/latin/lower-p.ptl b/font-src/glyphs/letter/latin/lower-p.ptl index 913920cd1..8fc64af6a 100644 --- a/font-src/glyphs/letter/latin/lower-p.ptl +++ b/font-src/glyphs/letter/latin/lower-p.ptl @@ -55,7 +55,7 @@ glyph-block Letter-Latin-Lower-P : begin select-variant 'p' 'p' select-variant 'cyrl/er' 0x440 (shapeFrom -- 'p') - with-related-glyphs 'cyrl/rrTick' 0x48F 'cyrl/er' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/rrTick' 0x48F 'cyrl/er' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : dispiro widths.center [AdviceStroke 4] diff --git a/font-src/glyphs/letter/latin/lower-r.ptl b/font-src/glyphs/letter/latin/lower-r.ptl index 029cbbf84..4a3d2ab1d 100644 --- a/font-src/glyphs/letter/latin/lower-r.ptl +++ b/font-src/glyphs/letter/latin/lower-r.ptl @@ -224,7 +224,7 @@ glyph-block Letter-Latin-Lower-R : begin include : dfN.markSet.e define [object rBottomSerif] : RDim dfN rEarless include : EarlessRoundedShape dfN rEarless 0 0 - create-derived 'rflap.serifed' : rBottomSerif 0 + create-forked-glyph 'rflap.serifed' : rBottomSerif 0 create-glyph 'rflap.compact' : glyph-proc set-width dfR.width diff --git a/font-src/glyphs/letter/latin/lower-t.ptl b/font-src/glyphs/letter/latin/lower-t.ptl index 391a451ae..4549ba55a 100644 --- a/font-src/glyphs/letter/latin/lower-t.ptl +++ b/font-src/glyphs/letter/latin/lower-t.ptl @@ -148,7 +148,7 @@ glyph-block Letter-Latin-Lower-T : begin select-variant 't' 't' select-variant 'turnt' 0x287 (follow -- 't') CreateCommaCaronComposition 't' 'tcaron' 0x165 - with-related-glyphs 'tCedilla' 0x163 't' ConnectedCedilla + derive-glyphs 'tCedilla' 0x163 't' ConnectedCedilla create-glyph 'tltail' 0x1AB : glyph-proc include : MarkSet.if diff --git a/font-src/glyphs/letter/latin/lower-y.ptl b/font-src/glyphs/letter/latin/lower-y.ptl index f6f5c79f1..bd90e3fe2 100644 --- a/font-src/glyphs/letter/latin/lower-y.ptl +++ b/font-src/glyphs/letter/latin/lower-y.ptl @@ -207,21 +207,21 @@ glyph-block Letter-Latin-Lower-Y : begin create-glyph : glyph-proc include : MarkSet.p set-base-anchor 'overlay' Middle (XH / 2) - create-derived 'y.straight' : glyph-proc + create-forked-glyph 'y.straight' : glyph-proc include : [GenSmallYShape true false SLAB-AUTO].SmallYShape XH Descender - create-derived 'y.straightTurn' : glyph-proc + create-forked-glyph 'y.straightTurn' : glyph-proc include : [GenSmallYShape true true SLAB-AUTO].SmallYShape XH Descender - create-derived 'y.curly' : glyph-proc + create-forked-glyph 'y.curly' : glyph-proc include : [GenSmallYShape false false SLAB-AUTO].SmallYShape XH Descender - create-derived 'y.curlyTurn' : glyph-proc + create-forked-glyph 'y.curlyTurn' : glyph-proc include : [GenSmallYShape false true SLAB-AUTO].SmallYShape XH Descender - create-derived 'y.straightMotionSerifed' : glyph-proc + create-forked-glyph 'y.straightMotionSerifed' : glyph-proc include : [GenSmallYShape true false SLAB-MOTION].SmallYShape XH Descender - create-derived 'y.straightTurnMotionSerifed' : glyph-proc + create-forked-glyph 'y.straightTurnMotionSerifed' : glyph-proc include : [GenSmallYShape true true SLAB-MOTION].SmallYShape XH Descender - create-derived 'y.curlyMotionSerifed' : glyph-proc + create-forked-glyph 'y.curlyMotionSerifed' : glyph-proc include : [GenSmallYShape false false SLAB-MOTION].SmallYShape XH Descender - create-derived 'y.curlyTurnMotionSerifed' : glyph-proc + create-forked-glyph 'y.curlyTurnMotionSerifed' : glyph-proc include : [GenSmallYShape false true SLAB-MOTION].SmallYShape XH Descender define [SmallYCursiveArc top bottom] : new-glyph : glyph-proc @@ -286,13 +286,13 @@ glyph-block Letter-Latin-Lower-Y : begin create-glyph : glyph-proc include : MarkSet.p set-base-anchor 'overlay' Middle (XH / 2) - create-derived 'yhooktop.straight' : glyph-proc + create-forked-glyph 'yhooktop.straight' : glyph-proc include : [GenSmallYShape true false SLAB-AUTO].SmallYHookTopShape XH Descender - create-derived 'yhooktop.straightTurn' : glyph-proc + create-forked-glyph 'yhooktop.straightTurn' : glyph-proc include : [GenSmallYShape true true SLAB-AUTO].SmallYHookTopShape XH Descender - create-derived 'yhooktop.curly' : glyph-proc + create-forked-glyph 'yhooktop.curly' : glyph-proc include : [GenSmallYShape false false SLAB-AUTO].SmallYHookTopShape XH Descender - create-derived 'yhooktop.curlyTurn' : glyph-proc + create-forked-glyph 'yhooktop.curlyTurn' : glyph-proc include : [GenSmallYShape false true SLAB-AUTO].SmallYHookTopShape XH Descender create-glyph 'yhooktop.cursive' : glyph-proc @@ -314,20 +314,20 @@ glyph-block Letter-Latin-Lower-Y : begin create-glyph : glyph-proc include : MarkSet.capital set-base-anchor 'overlay' Middle (XH / 2 - Descender) - create-derived 'cyrl/U.straight' : glyph-proc + create-forked-glyph 'cyrl/U.straight' : glyph-proc include : [GenSmallYShape true false SLAB-AUTO].SmallYShape CAP 0 - create-derived 'cyrl/U.straightTurn' : glyph-proc + create-forked-glyph 'cyrl/U.straightTurn' : glyph-proc include : [GenSmallYShape true true SLAB-AUTO].SmallYShape CAP 0 - create-derived 'cyrl/U.curly' : glyph-proc + create-forked-glyph 'cyrl/U.curly' : glyph-proc include : [GenSmallYShape false false SLAB-AUTO].SmallYShape CAP 0 - create-derived 'cyrl/U.curlyTurn' : glyph-proc + create-forked-glyph 'cyrl/U.curlyTurn' : glyph-proc include : [GenSmallYShape false true SLAB-AUTO].SmallYShape CAP 0 - create-derived 'cyrl/U.cursive' : glyph-proc + create-forked-glyph 'cyrl/U.cursive' : glyph-proc include : SmallYCursiveArc CAP (CAP - XH) include : SmallYCusriveHook CAP 0 if SLAB : include : CenterTopSerif (SB + HalfStroke * HVContrast) CAP Jut if SLAB : include : CenterTopSerif (RightSB - HalfStroke * HVContrast) CAP Jut - create-derived 'cyrl/U.cursiveFlatHook' : glyph-proc + create-forked-glyph 'cyrl/U.cursiveFlatHook' : glyph-proc include : SmallYCursiveArc CAP (CAP - XH) include : SmallYFlatHookCusriveHook CAP 0 if SLAB : include : CenterTopSerif (SB + HalfStroke * HVContrast) CAP Jut diff --git a/font-src/glyphs/letter/latin/s.ptl b/font-src/glyphs/letter/latin/s.ptl index 80d36234a..1f74cd305 100644 --- a/font-src/glyphs/letter/latin/s.ptl +++ b/font-src/glyphs/letter/latin/s.ptl @@ -406,10 +406,10 @@ glyph-block Letter-Latin-S : begin .y ([if (sign < 0) 0.25 0.375] * sign * BBD * [Math.cos theta]) } - build-related-composite 'cyrl/ghayn.italic' null 'revs' + derive-composites 'cyrl/ghayn.italic' null 'revs' FlatSlashShape Middle (XH / 2) (OverlayStroke / 2) (-0.2) 0.75 - build-related-composite 'cyrl/gheStrokeHook.italic' null 'cyrl/gheDHook.italic' + derive-composites 'cyrl/gheStrokeHook.italic' null 'cyrl/gheDHook.italic' FlatSlashShape Middle (XH / 2) (OverlayStroke / 2) (-0.2) 0.75 define DollarConfig : object diff --git a/font-src/glyphs/letter/latin/u.ptl b/font-src/glyphs/letter/latin/u.ptl index ef31a2dba..d74b2b68a 100644 --- a/font-src/glyphs/letter/latin/u.ptl +++ b/font-src/glyphs/letter/latin/u.ptl @@ -175,15 +175,15 @@ glyph-block Letter-Latin-U : begin select-variant 'cyrl/i.italic.reduced' (shapeFrom -- 'u') alias 'cyrl/i.BGR' null 'cyrl/i.italic' - with-related-glyphs 'cyrl/ibreve.BGR' null 'cyrl/i.BGR' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/ibreve.BGR' null 'cyrl/i.BGR' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph 'breveAbove'] - with-related-glyphs 'cyrl/igrave.BGR' null 'cyrl/i.BGR' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/igrave.BGR' null 'cyrl/i.BGR' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph 'graveAbove'] - build-related-composite 'cyrl/iShortTail.italic' null 'cyrl/i.italic.reduced' [refer-glyph 'breveAbove'] [CyrTailDescender RightSB] + derive-composites 'cyrl/iShortTail.italic' null 'cyrl/i.italic.reduced' [refer-glyph 'breveAbove'] [CyrTailDescender RightSB] create-glyph 'grek/upsilon' 0x3C5 : glyph-proc include : MarkSet.e diff --git a/font-src/glyphs/letter/latin/upper-b.ptl b/font-src/glyphs/letter/latin/upper-b.ptl index f47c407a7..81a7810b6 100644 --- a/font-src/glyphs/letter/latin/upper-b.ptl +++ b/font-src/glyphs/letter/latin/upper-b.ptl @@ -155,7 +155,7 @@ glyph-block Letter-Latin-Upper-B : begin VBarRight ([mix SB RightSB BArcMix] - BBD - OX * 2) (CAP * BBarPos) CAP BBS VBarLeft (SB + BBD) 0 CAP BBS - with-related-glyphs 'Bhookleft' 0x181 'B' : lambda [src sel] : glyph-proc + derive-glyphs 'Bhookleft' 0x181 'B' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS eject-contour "serifLT" include : LeftHook SB CAP @@ -234,11 +234,11 @@ glyph-block Letter-Latin-Upper-B : begin mix 0 (top * 0.52 + stroke / 2) 0.5 Math.min ((top - Stroke * 3) / 4) OverlayStroke - with-related-glyphs 'BBar' 0x243 'BReduced' : lambda [src sel] : glyph-proc + derive-glyphs 'BBar' 0x243 'BReduced' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : BOverlayBar CAP - with-related-glyphs 'smcpBbar' 0x1D03 'smcpB' : lambda [src sel] : glyph-proc + derive-glyphs 'smcpBbar' 0x1D03 'smcpB' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : BOverlayBar XH diff --git a/font-src/glyphs/letter/latin/upper-d.ptl b/font-src/glyphs/letter/latin/upper-d.ptl index 91b945ad3..fc79037e4 100644 --- a/font-src/glyphs/letter/latin/upper-d.ptl +++ b/font-src/glyphs/letter/latin/upper-d.ptl @@ -64,18 +64,18 @@ glyph-block Letter-Latin-Upper-D : begin include : DShape XH fRound fSlabTop fSlabBot select-variant 'D' 'D' - with-related-glyphs 'Eth' 0xD0 'D' : lambda [src sel] : glyph-proc + derive-glyphs 'Eth' 0xD0 'D' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (CAP * OverlayPos) alias 'Dcroat' 0x110 'Eth' alias 'arficanD' 0x189 'Eth' select-variant 'smcpD' 0x1D05 (follow -- 'D') - with-related-glyphs 'smcpEth' 0x1D06 'smcpD' : lambda [src sel] : glyph-proc + derive-glyphs 'smcpEth' 0x1D06 'smcpD' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (XH * OverlayPos) - with-related-glyphs 'Dhookleft' 0x18a 'D' : lambda [src sel] : glyph-proc + derive-glyphs 'Dhookleft' 0x18a 'D' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS eject-contour 'serifLT' include : LeftHook SB CAP diff --git a/font-src/glyphs/letter/latin/upper-g.ptl b/font-src/glyphs/letter/latin/upper-g.ptl index 6836bda3f..41b6df0b8 100644 --- a/font-src/glyphs/letter/latin/upper-g.ptl +++ b/font-src/glyphs/letter/latin/upper-g.ptl @@ -105,7 +105,7 @@ glyph-block Letter-Latin-Upper-G : begin create-glyph "G.\(suffix)" : glyph-proc include : MarkSet.capital include : GShape shape slabType crossBarShape CAP SmoothA SmoothB - create-derived "Gbar.\(suffix)" : OverlayBarOfG CAP + create-forked-glyph "Gbar.\(suffix)" : OverlayBarOfG CAP create-glyph "GHookTop.\(suffix)" : glyph-proc include : MarkSet.capital include : GShape shape SLAB-HOOK-TOP crossBarShape CAP SmoothA SmoothB diff --git a/font-src/glyphs/letter/latin/upper-h.ptl b/font-src/glyphs/letter/latin/upper-h.ptl index 3e7f05c1e..4c35a5a16 100644 --- a/font-src/glyphs/letter/latin/upper-h.ptl +++ b/font-src/glyphs/letter/latin/upper-h.ptl @@ -90,11 +90,11 @@ glyph-block Letter-Latin-Upper-H : begin select-variant 'cyrl/en' 0x43D (shapeFrom -- 'smcpH') - build-related-composite 'cyrl/EnDescender' 0x4A2 'H' [CyrDescender RightSB (connex -- 0.5)] - build-related-composite 'cyrl/enDescender' 0x4A3 'smcpH' [CyrDescender RightSB (connex -- 0.5)] + derive-composites 'cyrl/EnDescender' 0x4A2 'H' [CyrDescender RightSB (connex -- 0.5)] + derive-composites 'cyrl/enDescender' 0x4A3 'smcpH' [CyrDescender RightSB (connex -- 0.5)] - build-related-composite 'cyrl/EnTail' 0x4C9 'H' [CyrTailDescender RightSB (connex -- 0.5)] - build-related-composite 'cyrl/enTail' 0x4CA 'smcpH' [CyrTailDescender RightSB (connex -- 0.5)] + derive-composites 'cyrl/EnTail' 0x4C9 'H' [CyrTailDescender RightSB (connex -- 0.5)] + derive-composites 'cyrl/enTail' 0x4CA 'smcpH' [CyrTailDescender RightSB (connex -- 0.5)] create-glyph 'mathbb/H' 0x210D : glyph-proc include : MarkSet.capital diff --git a/font-src/glyphs/letter/latin/upper-l.ptl b/font-src/glyphs/letter/latin/upper-l.ptl index 1b8788100..3fbccd862 100644 --- a/font-src/glyphs/letter/latin/upper-l.ptl +++ b/font-src/glyphs/letter/latin/upper-l.ptl @@ -50,7 +50,7 @@ glyph-block Letter-Latin-Upper-L : begin turned 'turnL' 0xA780 'L' Middle (CAP / 2) - with-related-glyphs 'Lcaron' 0x13D 'L' : lambda [src sel] : glyph-proc + derive-glyphs 'Lcaron' 0x13D 'L' : lambda [src sel] : glyph-proc include : WithTransform [Translate (Width + (RightSB - SB) * 0.375) 0] refer-glyph "commaAbove" include [refer-glyph src] AS_BASE ALSO_METRICS @@ -62,24 +62,24 @@ glyph-block Letter-Latin-Upper-L : begin flat [mix 0 SB 0.5] (middle - LongJut * 0.4) [widths fine fine] curl (1.6 * LongJut + [mix 0 SB 0.5]) (middle + LongJut * 0.4) - with-related-glyphs 'LSlash' 0x141 'L' : lambda [src sel] : glyph-proc + derive-glyphs 'LSlash' 0x141 'L' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : LSlashOverlay CAP - with-related-glyphs 'smcpLSlash' 0x1D0C 'smcpL' : lambda [src sel] : glyph-proc + derive-glyphs 'smcpLSlash' 0x1D0C 'smcpL' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : LSlashOverlay XH - with-related-glyphs 'LTildeOver' 0x2C62 'L' : lambda [src sel] : glyph-proc + derive-glyphs 'LTildeOver' 0x2C62 'L' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : new-glyph : glyph-proc include : refer-glyph "tildeAboveOverlay" include : ApparentTranslate (SB * 1.5 + Stroke * HVContrast / 2 - markMiddle) (CAP * 0.525 - [mix aboveMarkBot aboveMarkTop 0.5]) - with-related-glyphs 'Ldot' 0x13F 'L' : lambda [src sel] : glyph-proc + derive-glyphs 'Ldot' 0x13F 'L' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE include : Ring ([mix Stroke CAP 0.5] + DotRadius) ([mix Stroke CAP 0.5] - DotRadius) ([mix SB RightSB 0.65] - DotRadius) ([mix SB RightSB 0.65] + DotRadius) - with-related-glyphs 'Lbar' 0x23D 'L' : lambda [src sel] : glyph-proc + derive-glyphs 'Lbar' 0x23D 'L' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (CAP * OverlayPos) \ No newline at end of file diff --git a/font-src/glyphs/letter/latin/upper-m.ptl b/font-src/glyphs/letter/latin/upper-m.ptl index 16b00ec22..e454a4179 100644 --- a/font-src/glyphs/letter/latin/upper-m.ptl +++ b/font-src/glyphs/letter/latin/upper-m.ptl @@ -100,8 +100,8 @@ glyph-block Letter-Latin-Upper-M : begin alias 'grek/Mu' 0x39C 'M' alias 'cyrl/Em' 0x41C 'M' - build-related-composite 'cyrl/EmTail' 0x4CD 'cyrl/Em' [CyrTailDescender RightSB] - build-related-composite 'cyrl/emTail' 0x4CE 'cyrl/em' [CyrTailDescender RightSB] + derive-composites 'cyrl/EmTail' 0x4CD 'cyrl/Em' [CyrTailDescender RightSB] + derive-composites 'cyrl/emTail' 0x4CE 'cyrl/em' [CyrTailDescender RightSB] glyph-block-import Letter-Blackboard : BBS BBD BBBarRight create-glyph 'mathbb/M' 0x1D544 : glyph-proc diff --git a/font-src/glyphs/letter/latin/upper-p.ptl b/font-src/glyphs/letter/latin/upper-p.ptl index 23e9cd344..4c1886886 100644 --- a/font-src/glyphs/letter/latin/upper-p.ptl +++ b/font-src/glyphs/letter/latin/upper-p.ptl @@ -148,7 +148,7 @@ glyph-block Letter-Latin-Upper-P : begin alias 'grek/Rho' 0x3A1 'P' alias 'cyrl/Er' 0x420 'P' - with-related-glyphs 'cyrl/ErTick' 0x48E 'cyrl/Er' : lambda [src sel] : glyph-proc + derive-glyphs 'cyrl/ErTick' 0x48E 'cyrl/Er' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS local yBowl : [PBarPosY CAP Stroke PShape.BarPos] + 0.75 * Stroke include : dispiro diff --git a/font-src/glyphs/letter/latin/upper-r.ptl b/font-src/glyphs/letter/latin/upper-r.ptl index aa8c101b5..330693815 100644 --- a/font-src/glyphs/letter/latin/upper-r.ptl +++ b/font-src/glyphs/letter/latin/upper-r.ptl @@ -248,7 +248,7 @@ glyph-block Letter-Latin-Upper-R : begin select-variant 'currency/indianRupeeSign' 0x20B9 (follow -- 'Rrotunda') - with-related-glyphs 'Rbar' 0x24C 'R' : lambda [src sel] : glyph-proc + derive-glyphs 'Rbar' 0x24C 'R' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : HBar [mix 0 SB 0.3] (SB - O) ((CAP - Stroke) * [RBarPos CAP SLAB] + Stroke * 0.25) @@ -261,11 +261,11 @@ glyph-block Letter-Latin-Upper-R : begin local legTop : RLegTop top Stroke bp local right (RightSB - O - [if SLAB (Jut / 8) 0]) - create-derived 'Yr.straight' + create-forked-glyph 'Yr.straight' RLegShape-Straight legTop Descender Middle right (top - Descender) SLAB Stroke 0 - create-derived 'Yr.curly' + create-forked-glyph 'Yr.curly' RLegShape-Curly legTop Descender Middle right (top - Descender) SLAB Stroke 0 - create-derived 'Yr.standing' + create-forked-glyph 'Yr.standing' RLegShape-Standing legTop Descender Middle right (top - Descender) SLAB Stroke 0 select-variant 'Yr' 0x1A6 (follow -- 'Rrotunda') diff --git a/font-src/glyphs/letter/latin/upper-y.ptl b/font-src/glyphs/letter/latin/upper-y.ptl index eb904a2ad..720470459 100644 --- a/font-src/glyphs/letter/latin/upper-y.ptl +++ b/font-src/glyphs/letter/latin/upper-y.ptl @@ -89,7 +89,7 @@ glyph-block Letter-Latin-Upper-Y : begin alias 'grek/Upsilon' 0x3A5 'Y' alias 'cyrl/Ue' 0x4AE 'Y' - with-related-glyphs 'currency/yenSign' 0xA5 'Y' : lambda [src sel] : glyph-proc + derive-glyphs 'currency/yenSign' 0xA5 'Y' : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : YOverlayShape diff --git a/font-src/glyphs/letter/latin/v.ptl b/font-src/glyphs/letter/latin/v.ptl index 327e9ec02..5414e1193 100644 --- a/font-src/glyphs/letter/latin/v.ptl +++ b/font-src/glyphs/letter/latin/v.ptl @@ -182,13 +182,13 @@ glyph-block Letter-Latin-V : begin create-glyph : glyph-proc include : MarkSet.e - create-derived 'vhooktop.straight' : VHooktopShape [DivFrame 1] true XH - create-derived 'vhooktop.curly' : VHooktopShape [DivFrame 1] false XH + create-forked-glyph 'vhooktop.straight' : VHooktopShape [DivFrame 1] true XH + create-forked-glyph 'vhooktop.curly' : VHooktopShape [DivFrame 1] false XH create-glyph : glyph-proc include : MarkSet.capital - create-derived 'cyrl/Izhitsa.straight' : VHooktopShape [DivFrame 1] true CAP - create-derived 'cyrl/Izhitsa.curly' : VHooktopShape [DivFrame 1] false CAP + create-forked-glyph 'cyrl/Izhitsa.straight' : VHooktopShape [DivFrame 1] true CAP + create-forked-glyph 'cyrl/Izhitsa.curly' : VHooktopShape [DivFrame 1] false CAP select-variant 'V' 'V' select-variant 'v' 'v' diff --git a/font-src/glyphs/letter/latin/w.ptl b/font-src/glyphs/letter/latin/w.ptl index 9457325bc..963ef51d9 100644 --- a/font-src/glyphs/letter/latin/w.ptl +++ b/font-src/glyphs/letter/latin/w.ptl @@ -293,17 +293,17 @@ glyph-block Letter-Latin-W : begin local df : DivFrame para.diversityM 3 set-width df.width include : df.markSet.capital - create-derived 'Whooktop.straightFlatTop' : WHooktopShape df CAP FORM-FLAT-TOP - create-derived 'Whooktop.straight' : WHooktopShape df CAP FORM-STRAIGHT - create-derived 'Whooktop.curly' : WHooktopShape df CAP FORM-CURLY + create-forked-glyph 'Whooktop.straightFlatTop' : WHooktopShape df CAP FORM-FLAT-TOP + create-forked-glyph 'Whooktop.straight' : WHooktopShape df CAP FORM-STRAIGHT + create-forked-glyph 'Whooktop.curly' : WHooktopShape df CAP FORM-CURLY create-glyph : glyph-proc local df : DivFrame para.diversityM 3 set-width df.width include : df.markSet.e - create-derived 'whooktop.straightFlatTop' : WHooktopShape df XH FORM-FLAT-TOP - create-derived 'whooktop.straight' : WHooktopShape df XH FORM-STRAIGHT - create-derived 'whooktop.curly' : WHooktopShape df XH FORM-CURLY + create-forked-glyph 'whooktop.straightFlatTop' : WHooktopShape df XH FORM-FLAT-TOP + create-forked-glyph 'whooktop.straight' : WHooktopShape df XH FORM-STRAIGHT + create-forked-glyph 'whooktop.curly' : WHooktopShape df XH FORM-CURLY select-variant 'W' 'W' select-variant 'Whooktop' 0x2C72 @@ -321,7 +321,7 @@ glyph-block Letter-Latin-W : begin include : HOverlayBar [mix SB 0 0.7] [mix df.rightSB df.width 0.7] (CAP * 0.6) include : HOverlayBar [mix SB 0 0.7] [mix df.rightSB df.width 0.7] (CAP * 0.35) - with-related-glyphs 'symbols/currency/wonSign' 0x20A9 'W' : lambda [src sel] : glyph-proc + derive-glyphs 'symbols/currency/wonSign' 0x20A9 'W' : lambda [src sel] : glyph-proc local df : DivFrame para.diversityM 3 include [refer-glyph src] AS_BASE ALSO_METRICS include [WonOverlay df] diff --git a/font-src/glyphs/letter/latin/x.ptl b/font-src/glyphs/letter/latin/x.ptl index 24e387525..d5209c59a 100644 --- a/font-src/glyphs/letter/latin/x.ptl +++ b/font-src/glyphs/letter/latin/x.ptl @@ -181,15 +181,15 @@ glyph-block Letter-Latin-X : begin select-variant 'grek/chi' 0x3C7 alias 'latinchi' 0xAB53 'grek/chi' - build-related-composite 'cyrl/HaDescender' 0x4B2 'cyrl/Ha' [CyrDescender RightSB] - build-related-composite 'cyrl/haDescender' 0x4B3 'xCyrlHaDescenderBase' [CyrDescender RightSB] + derive-composites 'cyrl/HaDescender' 0x4B2 'cyrl/Ha' [CyrDescender RightSB] + derive-composites 'cyrl/haDescender' 0x4B3 'xCyrlHaDescenderBase' [CyrDescender RightSB] - build-related-composite 'cyrl/HaHook' 0x4FC 'cyrl/Ha' [CyrHookDescender RightSB] - build-related-composite 'cyrl/haHook' 0x4FD 'xCyrlHaDescenderBase' [CyrHookDescender RightSB] + derive-composites 'cyrl/HaHook' 0x4FC 'cyrl/Ha' [CyrHookDescender RightSB] + derive-composites 'cyrl/haHook' 0x4FD 'xCyrlHaDescenderBase' [CyrHookDescender RightSB] define [CyrlHaBarShape top] : HOverlayBar [mix SB RightSB 0.08] [mix SB RightSB 0.92] (top / 2) - build-related-composite 'cyrl/HaBar' 0x4FE 'cyrl/Ha' [CyrlHaBarShape CAP] - build-related-composite 'cyrl/haBar' 0x4FF 'cyrl/ha' [CyrlHaBarShape XH] + derive-composites 'cyrl/HaBar' 0x4FE 'cyrl/Ha' [CyrlHaBarShape CAP] + derive-composites 'cyrl/haBar' 0x4FF 'cyrl/ha' [CyrlHaBarShape XH] glyph-block-import Letter-Blackboard : BBS BBD define [BBXShape l r top] : let [kDiag : DiagCorDs top (r - l) BBD] : union diff --git a/font-src/glyphs/letter/shared.ptl b/font-src/glyphs/letter/shared.ptl index ffc9e9613..75c04b16c 100644 --- a/font-src/glyphs/letter/shared.ptl +++ b/font-src/glyphs/letter/shared.ptl @@ -12,7 +12,7 @@ glyph-block Letter-Shared : begin glyph-block-export CreateDottedComposition define [CreateDottedComposition sourceGid dstGid unicode] - with-related-glyphs dstGid unicode sourceGid + derive-glyphs dstGid unicode sourceGid lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include : refer-glyph "dotAbove" @@ -21,7 +21,7 @@ glyph-block Letter-Shared : begin glyph-block-export CreateCommaCaronComposition define [CreateCommaCaronComposition sourceGid dstGid unicode] - with-related-glyphs dstGid unicode sourceGid + derive-glyphs dstGid unicode sourceGid lambda [src sel] : glyph-proc define srcGlyph : query-glyph src define commaOffset : (Width / 2) * [Math.pow (srcGlyph.advanceWidth / Width * 2) (2/3)] @@ -31,7 +31,7 @@ glyph-block Letter-Shared : begin glyph-block-export CreateAccentedComposition define [CreateAccentedComposition dstGid unicode srcGid accentGid] - with-related-glyphs dstGid unicode srcGid : lambda [src sel] : glyph-proc + derive-glyphs dstGid unicode srcGid : lambda [src sel] : glyph-proc include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph accentGid] if [not sel] : CvDecompose.set currentGlyph { src accentGid } diff --git a/font-src/glyphs/marks/index.ptl b/font-src/glyphs/marks/index.ptl index fee7622fb..827439170 100644 --- a/font-src/glyphs/marks/index.ptl +++ b/font-src/glyphs/marks/index.ptl @@ -283,13 +283,13 @@ glyph-block Marks : begin rightEnd -- (markMiddle + markExtend * 1.5) hs -- fine - create-derived 'tildeSlashAbove' 0x34A : glyph-proc + create-forked-glyph 'tildeSlashAbove' 0x34A : glyph-proc include : dispiro widths.center (fine * 2) flat (markMiddle + markExtend * 0.2) [mix tbot ttop 1.5] curl (markMiddle - markExtend * 0.2) [mix ttop tbot 1.5] - create-derived 'tildedotdotAbove' 0x34B : glyph-proc + create-forked-glyph 'tildedotdotAbove' 0x34B : glyph-proc local r : 0.75 * DotRadius * fine / HalfStroke include : DotAt markMiddle [mix tbot ttop 1.5] r include : DotAt markMiddle [mix ttop tbot 1.5] r diff --git a/font-src/glyphs/symbol/ligation.ptl b/font-src/glyphs/symbol/ligation.ptl index b57167b24..d4f3d2b6b 100644 --- a/font-src/glyphs/symbol/ligation.ptl +++ b/font-src/glyphs/symbol/ligation.ptl @@ -9,7 +9,7 @@ glyph-module glyph-block Symbol-Ligation : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - glyph-block-import Symbol-Math-Relation : LessSlope + glyph-block-import Symbol-Math-Relation-Common : LessSlope local arrowheadsKern : (2 / 3) * [clamp 0 (Width * 0.4) (Width - OperatorStroke * 3)] @@ -121,17 +121,18 @@ glyph-block Symbol-Ligation : begin do "Arrowheads" - glyph-block-import Symbol-Math-Relation : dH LigationLessShape LigationGreaterShape + glyph-block-import Symbol-Math-Relation-Common : dH + glyph-block-import Symbol-Math-Relation-Inequality : LigationLessShape LigationGreaterShape create-glyph 'less.lig.dblhead' : glyph-proc include : LigationLessShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB OperatorStroke dblArrowSw (dblArrowD * 2 - dblArrowSw * 2) create-aliased-glyph 'less.lig.dblhead.mid' - create-derived 'less.lig.dblhead.shift1' : Translate (-arrowheadsKern) 0 + create-forked-glyph 'less.lig.dblhead.shift1' : Translate (-arrowheadsKern) 0 create-glyph 'greater.lig.dblhead' : glyph-proc include : LigationGreaterShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB OperatorStroke dblArrowSw (dblArrowD * 2 - dblArrowSw * 2) create-aliased-glyph 'greater.lig.dblhead.mid' - create-derived 'greater.lig.dblhead.shift1' : Translate (+arrowheadsKern) 0 + create-forked-glyph 'greater.lig.dblhead.shift1' : Translate (+arrowheadsKern) 0 create-glyph 'exclam.lig.htmlcommentstart' : glyph-proc include : refer-glyph "exclam" @@ -145,14 +146,14 @@ glyph-block Symbol-Ligation : begin create-aliased-glyph 'greater.lig.shift0.anti' create-aliased-glyph 'greater.lig.shiftN0' create-aliased-glyph 'greater.lig.shiftN0.mid' - create-derived 'greater.lig.shift0h' : Translate (arrowheadsKern * 0.5 ) 0 - create-derived 'greater.lig.shift1' : Translate (arrowheadsKern * 1.0 ) 0 - create-derived 'greater.lig.shift1h' : Translate (arrowheadsKern * 1.5 ) 0 - create-derived 'greater.lig.shift2' : Translate (arrowheadsKern * 2.0 ) 0 - create-derived 'greater.lig.shiftN0h' : Translate (arrowheadsKern * (-0.5)) 0 - create-derived 'greater.lig.shiftN1' : Translate (arrowheadsKern * (-1.0)) 0 - create-derived 'greater.lig.shiftN1h' : Translate (arrowheadsKern * (-1.5)) 0 - create-derived 'greater.lig.shiftN2' : Translate (arrowheadsKern * (-2.0)) 0 + create-forked-glyph 'greater.lig.shift0h' : Translate (arrowheadsKern * 0.5 ) 0 + create-forked-glyph 'greater.lig.shift1' : Translate (arrowheadsKern * 1.0 ) 0 + create-forked-glyph 'greater.lig.shift1h' : Translate (arrowheadsKern * 1.5 ) 0 + create-forked-glyph 'greater.lig.shift2' : Translate (arrowheadsKern * 2.0 ) 0 + create-forked-glyph 'greater.lig.shiftN0h' : Translate (arrowheadsKern * (-0.5)) 0 + create-forked-glyph 'greater.lig.shiftN1' : Translate (arrowheadsKern * (-1.0)) 0 + create-forked-glyph 'greater.lig.shiftN1h' : Translate (arrowheadsKern * (-1.5)) 0 + create-forked-glyph 'greater.lig.shiftN2' : Translate (arrowheadsKern * (-2.0)) 0 create-glyph 'less.lig.shift0' : glyph-proc include [refer-glyph 'less'] AS_BASE ALSO_METRICS @@ -160,14 +161,14 @@ glyph-block Symbol-Ligation : begin create-aliased-glyph 'less.lig.shift0.anti' create-aliased-glyph 'less.lig.shiftN0' create-aliased-glyph 'less.lig.shiftN0.mid' - create-derived 'less.lig.shift0h' : Translate (arrowheadsKern * (-0.5)) 0 - create-derived 'less.lig.shift1' : Translate (arrowheadsKern * (-1.0)) 0 - create-derived 'less.lig.shift1h' : Translate (arrowheadsKern * (-1.5)) 0 - create-derived 'less.lig.shift2' : Translate (arrowheadsKern * (-2.0)) 0 - create-derived 'less.lig.shiftN0h' : Translate (arrowheadsKern * 0.5 ) 0 - create-derived 'less.lig.shiftN1' : Translate (arrowheadsKern * 1.0 ) 0 - create-derived 'less.lig.shiftN1h' : Translate (arrowheadsKern * 1.5 ) 0 - create-derived 'less.lig.shiftN2' : Translate (arrowheadsKern * 2.0 ) 0 + create-forked-glyph 'less.lig.shift0h' : Translate (arrowheadsKern * (-0.5)) 0 + create-forked-glyph 'less.lig.shift1' : Translate (arrowheadsKern * (-1.0)) 0 + create-forked-glyph 'less.lig.shift1h' : Translate (arrowheadsKern * (-1.5)) 0 + create-forked-glyph 'less.lig.shift2' : Translate (arrowheadsKern * (-2.0)) 0 + create-forked-glyph 'less.lig.shiftN0h' : Translate (arrowheadsKern * 0.5 ) 0 + create-forked-glyph 'less.lig.shiftN1' : Translate (arrowheadsKern * 1.0 ) 0 + create-forked-glyph 'less.lig.shiftN1h' : Translate (arrowheadsKern * 1.5 ) 0 + create-forked-glyph 'less.lig.shiftN2' : Translate (arrowheadsKern * 2.0 ) 0 define [ArrowHeadHole] : Rect (SymbolMid + dblArrowD - dblArrowSw) (SymbolMid - dblArrowD + dblArrowSw) (-Width) (2 * Width) @@ -192,7 +193,8 @@ glyph-block Symbol-Ligation : begin ArrowHeadHole do "Equal and Inequal" - glyph-block-import Symbol-Math-Relation : EqualShape EqualHole IdentShape IdentHole EqualHalfSpace + glyph-block-import Symbol-Math-Relation-Common : EqualHalfSpace + glyph-block-import Symbol-Math-Relation-Equal : EqualShape EqualHole IdentShape IdentHole define joiningOverlap (-Width / 6) create-glyph 'equal.fc' : glyph-proc include : difference @@ -299,7 +301,7 @@ glyph-block Symbol-Ligation : begin notGlyph.generic 'neq.4-dotted' null 'sp1' (shift -- (Width * 1.5)) (F -- exSlash2) do "<| , |> and <>" - glyph-block-import Symbol-Math-Relation : LessShape GreaterShape + glyph-block-import Symbol-Math-Relation-Inequality : LessShape GreaterShape local trigLeft : mix SB RightSB (1/6) local trigRight : Width * 1.5 - OperatorStroke * 1.5 * HVContrast diff --git a/font-src/glyphs/symbol/math.ptl b/font-src/glyphs/symbol/math.ptl index c6a5c5199..a15f0da9f 100644 --- a/font-src/glyphs/symbol/math.ptl +++ b/font-src/glyphs/symbol/math.ptl @@ -7,7 +7,8 @@ export : define [apply] : begin run-glyph-module './math/arith.js' run-glyph-module './math/complement.js' run-glyph-module './math/dots-and-colons.js' - run-glyph-module './math/frame-and-geometry.js' + run-glyph-module './math/frame.js' + run-glyph-module './math/geometry.js' run-glyph-module './math/integrals.js' run-glyph-module './math/large-operators.js' run-glyph-module './math/letter-like.js' diff --git a/font-src/glyphs/symbol/math/arith.ptl b/font-src/glyphs/symbol/math/arith.ptl index 8d44b4cdd..20a22b5d5 100644 --- a/font-src/glyphs/symbol/math/arith.ptl +++ b/font-src/glyphs/symbol/math/arith.ptl @@ -10,7 +10,7 @@ glyph-block Symbol-Math-Arith : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives glyph-block-export PlusShape - glyph-block-import Symbol-Math-Frame-And-Geometry : MathEnclosureSw + glyph-block-import Symbol-Math-Frame : MathEnclosureSw define [PlusShape left right s sw] : union HBar left right SymbolMid [fallback sw OperatorStroke] diff --git a/font-src/glyphs/symbol/math/frame-and-geometry.ptl b/font-src/glyphs/symbol/math/frame.ptl similarity index 68% rename from font-src/glyphs/symbol/math/frame-and-geometry.ptl rename to font-src/glyphs/symbol/math/frame.ptl index 263ae7872..95d99158a 100644 --- a/font-src/glyphs/symbol/math/frame-and-geometry.ptl +++ b/font-src/glyphs/symbol/math/frame.ptl @@ -6,12 +6,12 @@ import '../../../support/point' as Point glyph-module -glyph-block Symbol-Math-Frame-And-Geometry : begin +glyph-block Symbol-Math-Frame : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives glyph-block-export MathEnclosureSw - define MathEnclosureSw : AdviceStroke 5 + define MathEnclosureSw : AdviceStroke 4 local kBox : 2 / 3 local leftBox : SB * kBox local rightBox : Width - SB * kBox @@ -94,35 +94,3 @@ glyph-block Symbol-Math-Frame-And-Geometry : begin g4 (rightBig) SymbolMid arcvh nothing 2 close - - create-glyph 'mathRightTriangle' 0x22BF : glyph-proc - include : intersection - spiro-outline - corner leftBox bottomBox - corner rightBox bottomBox - corner rightBox topBox - union - dispiro [widths.lhs MathEnclosureSw] [flat leftBox bottomBox] [curl rightBox bottomBox] - dispiro [widths.lhs MathEnclosureSw] [flat rightBox bottomBox] [curl rightBox topBox] - dispiro [widths.lhs MathEnclosureSw] [flat rightBox topBox] [curl leftBox bottomBox] - - create-glyph 'angle' 0x2220 : glyph-proc - include : intersection - spiro-outline - corner leftBox bottomBox - corner rightBox bottomBox - corner rightBox topBox - union - dispiro [widths.lhs MathEnclosureSw] [flat leftBox bottomBox] [curl rightBox bottomBox] - dispiro [widths.lhs MathEnclosureSw] [flat rightBox topBox] [curl leftBox bottomBox] - - create-glyph 'rightAngle' 0x221F : glyph-proc - include : intersection - spiro-outline - corner leftBox bottomBox - corner rightBox bottomBox - corner rightBox topBox - corner leftBox topBox - union - dispiro [widths.lhs MathEnclosureSw] [flat leftBox bottomBox] [curl rightBox bottomBox] - dispiro [widths.lhs MathEnclosureSw] [flat leftBox topBox] [curl leftBox bottomBox] \ No newline at end of file diff --git a/font-src/glyphs/symbol/math/geometry.ptl b/font-src/glyphs/symbol/math/geometry.ptl new file mode 100644 index 000000000..4d52ac3a8 --- /dev/null +++ b/font-src/glyphs/symbol/math/geometry.ptl @@ -0,0 +1,76 @@ +$$include '../../../meta/macros.ptl' + +import [mix linreg clamp fallback] from '../../../support/utils' +import [DesignParameters] from '../../../meta/aesthetics' +import '../../../support/point' as Point + +glyph-module + +glyph-block Symbol-Math-Geometry : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + + local kBox : 2 / 3 + local leftBox : SB * kBox + local rightBox : Width - SB * kBox + local radiusBox : (rightBox - leftBox) / 2 + local topBox : SymbolMid + radiusBox + local bottomBox : SymbolMid - radiusBox + + create-glyph 'mathRightTriangle' 0x22BF : glyph-proc + include : intersection + spiro-outline + corner leftBox bottomBox + corner rightBox bottomBox + corner rightBox topBox + union + dispiro [widths.lhs GeometryStroke] [flat leftBox bottomBox] [curl rightBox bottomBox] + dispiro [widths.lhs GeometryStroke] [flat rightBox bottomBox] [curl rightBox topBox] + dispiro [widths.lhs GeometryStroke] [flat rightBox topBox] [curl leftBox bottomBox] + + create-glyph 'angle' 0x2220 : glyph-proc + include : intersection + spiro-outline + corner leftBox bottomBox + corner rightBox bottomBox + corner rightBox topBox + union + dispiro [widths.lhs GeometryStroke] [flat leftBox bottomBox] [curl rightBox bottomBox] + dispiro [widths.lhs GeometryStroke] [flat rightBox topBox] [curl leftBox bottomBox] + + create-glyph 'measuredAngle' 0x2221 : glyph-proc + include [refer-glyph 'angle'] AS_BASE ALSO_METRICS + include : intersection + spiro-outline + corner leftBox (bottomBox - [Math.tan (15 / 180 * Math.PI)] * radiusBox) + corner rightBox (bottomBox - [Math.tan (15 / 180 * Math.PI)] * radiusBox) + corner rightBox (bottomBox + 2 * [Math.tan (60 / 180 * Math.PI)] * radiusBox) + corner leftBox bottomBox + RingStrokeAt leftBox bottomBox (1.2 * radiusBox + GeometryStroke) GeometryStroke + + create-glyph 'sphericalAngle' 0x2222 : glyph-proc + include : intersection + spiro-outline + corner leftBox SymbolMid + corner rightBox bottomBox + corner rightBox topBox + union + dispiro [widths.lhs GeometryStroke] [flat leftBox SymbolMid] [curl rightBox bottomBox] + dispiro [widths.lhs GeometryStroke] [flat rightBox topBox] [curl leftBox SymbolMid] + include : intersection + spiro-outline + corner leftBox SymbolMid + corner rightBox (SymbolMid - 2 * [Math.tan (45 / 180 * Math.PI)] * radiusBox) + corner rightBox (SymbolMid + 2 * [Math.tan (45 / 180 * Math.PI)] * radiusBox) + RingStrokeAt leftBox SymbolMid (1.2 * radiusBox + GeometryStroke) GeometryStroke + + create-glyph 'rightAngle' 0x221F : glyph-proc + include : intersection + spiro-outline + corner leftBox bottomBox + corner rightBox bottomBox + corner rightBox topBox + corner leftBox topBox + union + dispiro [widths.lhs GeometryStroke] [flat leftBox bottomBox] [curl rightBox bottomBox] + dispiro [widths.lhs GeometryStroke] [flat leftBox topBox] [curl leftBox bottomBox] \ No newline at end of file diff --git a/font-src/glyphs/symbol/math/relation.ptl b/font-src/glyphs/symbol/math/relation.ptl index 5a52afd75..4960b537d 100644 --- a/font-src/glyphs/symbol/math/relation.ptl +++ b/font-src/glyphs/symbol/math/relation.ptl @@ -6,33 +6,48 @@ import '../../../support/point' as Point glyph-module -glyph-block Symbol-Math-Relation : begin - glyph-block-import CommonShapes - glyph-block-import Common-Derivatives - glyph-block-import Marks : TildeShape - glyph-block-export dH LessSlope - glyph-block-export LessShape GreaterShape LigationLessShape LigationGreaterShape - glyph-block-export EqualShape EqualHole IdentShape IdentHole EqualHalfSpace - glyph-block-import Symbol-Arrow : ArrowShape - +glyph-block Symbol-Math-Relation-Common : begin + glyph-block-export EqualHalfSpace define EqualHalfSpace : (OperTop - OperBot) * 2 * DesignParameters.equal_wideness + + glyph-block-export LessSlope define LessSlope : (4 / 13) * (OperTop - OperBot) / (RightSB - SB) + + glyph-block-export dH define dH : LessSlope * (RightSB - SB) + + glyph-block-export dHSubstSimple define dHSubstSimple : dH * 7 / 6 + + glyph-block-export dHElem define dHElem : dH * 4 / 3 + + glyph-block-export lessEqDist define lessEqDist : Math.max [AdviceStroke 4] (XH * 0.16) +glyph-block Symbol-Math-Relation-Equal : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + + glyph-block-import Symbol-Math-Relation-Common : EqualHalfSpace dH + glyph-block-export EqualShape EqualHole IdentShape IdentHole + + glyph-block-export : EqualShape define [EqualShape left right] : union HBar left right (SymbolMid + EqualHalfSpace) OperatorStroke HBar left right (SymbolMid - EqualHalfSpace) OperatorStroke + glyph-block-export : EqualHole define [EqualHole x] VBar x (SymbolMid - EqualHalfSpace) (SymbolMid + EqualHalfSpace) [AdviceStroke 6] + glyph-block-export : IdentShape define [IdentShape left right] : union HBar left right (SymbolMid + EqualHalfSpace * 1.5) OperatorStroke HBar left right SymbolMid OperatorStroke HBar left right (SymbolMid - EqualHalfSpace * 1.5) OperatorStroke + + glyph-block-export : IdentHole define [IdentHole x] VBar x (SymbolMid - EqualHalfSpace * 1.5) (SymbolMid + EqualHalfSpace * 1.5) [AdviceStroke 6] @@ -102,6 +117,58 @@ glyph-block Symbol-Math-Relation : begin Rect SymbolMid ParenBot 0 Width refer-glyph 'equal' + create-glyph 'ident' 0x2261 : glyph-proc + include : IdentShape SB RightSB + + create-glyph 'iiiident' 0x2263 : glyph-proc + include : HBar SB RightSB (SymbolMid + EqualHalfSpace * 2.25) OperatorStroke + include : HBar SB RightSB (SymbolMid + EqualHalfSpace * 0.75) OperatorStroke + include : HBar SB RightSB (SymbolMid - EqualHalfSpace * 0.75) OperatorStroke + include : HBar SB RightSB (SymbolMid - EqualHalfSpace * 2.25) OperatorStroke + + create-glyph 'equivalentTo' 0x224D : glyph-proc + define kArcExtY1 3 + define kArcExtY2 : 3 + TanSlope * 2 + define kArcExtX 2 + include : intersection [MaskRight SB] [MaskLeft RightSB] : union + dispiro + widths.center OperatorStroke + g4 [mix Middle SB kArcExtX] (SymbolMid + EqualHalfSpace * kArcExtY1) + g4 Middle (SymbolMid + EqualHalfSpace) [heading Rightward] + g4 [mix Middle RightSB kArcExtX] (SymbolMid + EqualHalfSpace * kArcExtY2) + dispiro + widths.center OperatorStroke + g4 [mix Middle SB kArcExtX] (SymbolMid - EqualHalfSpace * kArcExtY2) + g4 Middle (SymbolMid - EqualHalfSpace) [heading Rightward] + g4 [mix Middle RightSB kArcExtX] (SymbolMid - EqualHalfSpace * kArcExtY1) + +glyph-block Symbol-Math-Relation-Addons : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Symbol-Math-Relation-Common : lessEqDist dH + + glyph-block-export lesslessSW lesslessSWO llggHeight + define lesslessSW : AdviceStroke 4 + define lesslessSWO : Math.max lesslessSW lessEqDist + define llggHeight : dH * 2 + lessEqDist * 2 + + glyph-block-export EqEqBarNegationImpl + define [EqEqBarNegationImpl sw y1 y2] : dispiro + widths.center sw + flat (Middle + lessEqDist) (y1 + lesslessSWO) [heading Downward] + flat (Middle - lessEqDist) (y2 - lesslessSWO) [heading Downward] + + glyph-block-export EqEqBarNegation + define [EqEqBarNegation] : EqEqBarNegationImpl lesslessSW + SymbolMid - dH + lessEqDist * 2 / 3 + SymbolMid - dH - lessEqDist + +glyph-block Symbol-Math-Relation-Colons : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Symbol-Arrow : ArrowShape + glyph-block-import Symbol-Math-Relation-Equal : EqualShape + define ColonEqSbSquash 0.5 create-glyph 'eqColon' 0x2255 : glyph-proc include : refer-glyph "baselineDot" @@ -131,30 +198,85 @@ glyph-block Symbol-Math-Relation : begin include : HBar [mix SB barLeft 0.8] [mix barLeft barRight 0.5] SymbolMid OperatorStroke include : ArrowShape barLeft SymbolMid barRight SymbolMid arrowHeadSize - create-glyph 'ident' 0x2261 : glyph-proc - include : IdentShape SB RightSB +glyph-block Symbol-Math-Relation-Sym : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Marks : TildeShape + glyph-block-import Symbol-Math-Relation-Common : EqualHalfSpace + glyph-block-import Symbol-Math-Relation-Addons : EqEqBarNegationImpl - create-glyph 'iiiident' 0x2263 : glyph-proc - include : HBar SB RightSB (SymbolMid + EqualHalfSpace * 2.25) OperatorStroke - include : HBar SB RightSB (SymbolMid + EqualHalfSpace * 0.75) OperatorStroke - include : HBar SB RightSB (SymbolMid - EqualHalfSpace * 0.75) OperatorStroke - include : HBar SB RightSB (SymbolMid - EqualHalfSpace * 2.25) OperatorStroke + # Sym parameters + local approxDist : EqualHalfSpace * 1.75 + local symMag : (OperTop - SymbolMid) * 0.17 - create-glyph 'equivalentTo' 0x224D : glyph-proc - define kArcExtY1 3 - define kArcExtY2 : 3 + TanSlope * 2 - define kArcExtX 2 - include : intersection [MaskRight SB] [MaskLeft RightSB] : union - dispiro - widths.center OperatorStroke - g4 [mix Middle SB kArcExtX] (SymbolMid + EqualHalfSpace * kArcExtY1) - g4 Middle (SymbolMid + EqualHalfSpace) [heading Rightward] - g4 [mix Middle RightSB kArcExtX] (SymbolMid + EqualHalfSpace * kArcExtY2) - dispiro - widths.center OperatorStroke - g4 [mix Middle SB kArcExtX] (SymbolMid - EqualHalfSpace * kArcExtY2) - g4 Middle (SymbolMid - EqualHalfSpace) [heading Rightward] - g4 [mix Middle RightSB kArcExtX] (SymbolMid - EqualHalfSpace * kArcExtY1) + glyph-block-export symWave + define [symWave height mul sw] : TildeShape + ttop -- height + symMag * mul + tbot -- height - symMag * mul + leftEnd -- SB + rightEnd -- RightSB + hs -- [fallback sw OperatorStroke] / 2 + + create-glyph 'sym' 0x223C : symWave SymbolMid 1 + create-glyph 'flipSym' 0x223D : symWave SymbolMid (-1) + + create-glyph 'twoDotSym' 0x223B : composite-proc + refer-glyph 'sym' + DotAt Middle PlusTop DotRadius + DotAt Middle PlusBot DotRadius + + VDual 'approx' 0x2248 'sym' approxDist + + create-glyph 'aapprox' 0x224B : glyph-proc + include : symWave (SymbolMid + approxDist) 1 + include : symWave SymbolMid 1 + include : symWave (SymbolMid - approxDist) 1 + + create-glyph 'approxBar' 0x224A : glyph-proc + include : symWave (SymbolMid + approxDist) 1 + include : symWave SymbolMid 1 + include : HBar SB RightSB (SymbolMid - approxDist) OperatorStroke + + create-glyph 'barSym' 0x2242 : glyph-proc + include [refer-glyph 'sym'] AS_BASE + include : ApparentTranslate 0 (-approxDist / 2) + include : HBar SB RightSB (SymbolMid + approxDist / 2) OperatorStroke + + create-glyph 'symEq' 0x2243 : glyph-proc + include [refer-glyph 'sym'] AS_BASE + include : ApparentTranslate 0 (approxDist / 2) + include : HBar SB RightSB (SymbolMid - approxDist / 2) OperatorStroke + + create-glyph 'symEqEq' 0x2245 : glyph-proc + local sympShift : approxDist + EqualHalfSpace * 1.5 + include [refer-glyph 'sym'] AS_BASE + include : ApparentTranslate 0 (sympShift / 2) + include : HBar SB RightSB (SymbolMid - sympShift / 2 + EqualHalfSpace * 1.5) OperatorStroke + include : HBar SB RightSB (SymbolMid - sympShift / 2) OperatorStroke + + create-forked-glyph 'symEqEqBarNegated' 0x2246 : EqEqBarNegationImpl OperatorStroke + SymbolMid - sympShift / 2 + EqualHalfSpace * 1.5 + SymbolMid - sympShift / 2 + + create-glyph 'flipSymEq' 0x22CD : glyph-proc + include [refer-glyph 'flipSym'] AS_BASE + include : ApparentTranslate 0 (approxDist / 2) + include : HBar SB RightSB (SymbolMid - approxDist / 2) OperatorStroke + + create-glyph 'flipSymEqEq' 0x224C : glyph-proc + local sympShift : approxDist + EqualHalfSpace * 1.5 + include [refer-glyph 'flipSym'] AS_BASE + include : ApparentTranslate 0 (sympShift / 2) + include : HBar SB RightSB (SymbolMid - sympShift / 2 + EqualHalfSpace * 1.5) OperatorStroke + include : HBar SB RightSB (SymbolMid - sympShift / 2) OperatorStroke + +glyph-block Symbol-Math-Relation-Inequality : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Symbol-Math-Relation-Common : dH lessEqDist + glyph-block-import Symbol-Math-Relation-Sym : symWave + glyph-block-import Symbol-Math-Relation-Addons : lesslessSW EqEqBarNegation llggHeight + glyph-block-import Symbol-Math-Relation-Addon-Glyphs define [LessGreaterExpansion top bot l r] Math.sqrt : 1 + (top - bot) / (2 * (r - l)) * (top - bot) / (2 * (r - l)) @@ -196,10 +318,12 @@ glyph-block Symbol-Math-Relation : begin flat [mix r l pp] [mix [mix top bot 0.5] bot pp] curl r [mix top bot 0.5] [widths.heading (s / 2 * exp) (s / 2 * exp) Rightward] + glyph-block-export LessShape define [LessShape top bot l r s] : union LessShapeA top bot l r [fallback s OperatorStroke] LessShapeB top bot l r [fallback s OperatorStroke] + glyph-block-export LigationLessShape define [LigationLessShape top bot l r s t gap] : union intersection Rect [mix bot top 2] [mix top bot 2] [mix r l 2] r @@ -217,10 +341,12 @@ glyph-block Symbol-Math-Relation : begin define [NormalSubsetShape top bot l r s] : LigationLessShape top bot l r s s 0 + glyph-block-export GreaterShape define [GreaterShape top bot l r s] : union GreaterShapeA top bot l r [fallback s OperatorStroke] GreaterShapeB top bot l r [fallback s OperatorStroke] + glyph-block-export LigationGreaterShape define [LigationGreaterShape top bot l r s t gap] : union intersection Rect [mix bot top 2] [mix top bot 2] [mix l r 2] l @@ -238,25 +364,6 @@ glyph-block Symbol-Math-Relation : begin define [NormalSupersetShape top bot l r s] : LigationGreaterShape top bot l r s s 0 - - - # Sym parameters - local approxDist : EqualHalfSpace * 1.75 - local symMag : (OperTop - SymbolMid) * 0.17 - define [symWave height mul sw] : TildeShape - ttop -- height + symMag * mul - tbot -- height - symMag * mul - leftEnd -- SB - rightEnd -- RightSB - hs -- [fallback sw OperatorStroke] / 2 - - define [BarNegator symbolBottom dist] : begin - local swo : Math.max (OperatorStroke * 1.5) (dist * 1.5) - return : dispiro - widths.center OperatorStroke - flat (Middle + dist) (symbolBottom - dist + swo) [heading Downward] - flat (Middle - dist) (symbolBottom - dist - swo) [heading Downward] - create-glyph 'less' '<' : glyph-proc include : LessShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB @@ -281,29 +388,25 @@ glyph-block Symbol-Math-Relation : begin create-glyph 'greaterEqUpper' : AsRadical : GreaterShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB create-glyph 'normalSubsetUpper' : AsRadical : NormalSubsetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB create-glyph 'normalSupersetUpper' : AsRadical : NormalSupersetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB - create-glyph 'eqLower' : AsRadical : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke - create-glyph 'eqBarNegatedLower' : AsRadical : union [refer-glyph 'eqLower'] [BarNegator (SymbolMid - dH) lessEqDist] - create-glyph 'symLower' : AsRadical : symWave (SymbolMid - dH - lessEqDist) 1 - create-glyph 'symBarNegatedLower' : AsRadical : union [refer-glyph 'symLower'] [BarNegator (SymbolMid - dH) lessEqDist] - create-glyph 'less.narrow' : composite-proc [refer-glyph 'lessEqUpper'] [Upright] [Translate 0 (-lessEqDist)] [Italify] - create-glyph 'lessEq' 0x2264 : composite-proc [refer-glyph 'lessEqUpper'] [refer-glyph 'eqLower'] - create-glyph 'lessEqBarNegated' 0x2A87 : composite-proc [refer-glyph 'lessEqUpper'] [refer-glyph 'eqBarNegatedLower'] - create-glyph 'lessSym' 0x2272 : composite-proc [refer-glyph 'lessEqUpper'] [refer-glyph 'symLower'] - create-glyph 'lessSymBarNegated' 0x22E6 : composite-proc [refer-glyph 'lessEqUpper'] [refer-glyph 'symBarNegatedLower'] - create-glyph 'lessEqslant' 0x2A7D : composite-proc [refer-glyph 'lessEqUpper'] + derive-composites 'less.narrow' null 'lessEqUpper' [ApparentTranslate 0 (-lessEqDist)] + derive-composites 'lessEq' 0x2264 'lessEqUpper' 'eqLower' + derive-composites 'lessEqBarNegated' 0x2A87 'lessEqUpper' 'eqBarNegatedLower' + derive-composites 'lessSym' 0x2272 'lessEqUpper' 'symLower' + derive-composites 'lessSymBarNegated' 0x22E6 'lessEqUpper' 'symBarNegatedLower' + derive-composites 'lessEqslant' 0x2A7D 'lessEqUpper' LessShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) SB RightSB OperatorStroke - create-glyph 'greater.narrow' : composite-proc [refer-glyph 'greaterEqUpper'] [Upright] [Translate 0 (-lessEqDist)] [Italify] - create-glyph 'greaterEq' 0x2265 : composite-proc [refer-glyph 'greaterEqUpper'] [refer-glyph 'eqLower'] - create-glyph 'greaterEqBarNegated' 0x2A88 : composite-proc [refer-glyph 'greaterEqUpper'] [refer-glyph 'eqBarNegatedLower'] - create-glyph 'greaterSym' 0x2273 : composite-proc [refer-glyph 'greaterEqUpper'] [refer-glyph 'symLower'] - create-glyph 'greaterSymBarNegated' 0x22E7 : composite-proc [refer-glyph 'greaterEqUpper'] [refer-glyph 'symBarNegatedLower'] - create-glyph 'greaterEqslant' 0x2A7E : composite-proc [refer-glyph 'greaterEqUpper'] + derive-composites 'greater.narrow' null 'greaterEqUpper' [ApparentTranslate 0 (-lessEqDist)] + derive-composites 'greaterEq' 0x2265 'greaterEqUpper' 'eqLower' + derive-composites 'greaterEqBarNegated' 0x2A88 'greaterEqUpper' 'eqBarNegatedLower' + derive-composites 'greaterSym' 0x2273 'greaterEqUpper' 'symLower' + derive-composites 'greaterSymBarNegated' 0x22E7 'greaterEqUpper' 'symBarNegatedLower' + derive-composites 'greaterEqslant' 0x2A7E 'greaterEqUpper' GreaterShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) SB RightSB OperatorStroke - create-glyph 'normalSubsetEq' 0x22B4 : composite-proc [refer-glyph 'normalSubsetUpper'] [refer-glyph 'eqLower'] - create-glyph 'normalSupersetEq' 0x22B5 : composite-proc [refer-glyph 'normalSupersetUpper'] [refer-glyph 'eqLower'] + derive-composites 'normalSubsetEq' 0x22B4 'normalSubsetUpper' 'eqLower' + derive-composites 'normalSupersetEq' 0x22B5 'normalSupersetUpper' 'eqLower' turned 'turnGreaterEq' 0x22DC 'greaterEq' Middle SymbolMid turned 'turnLessEq' 0x22DD 'lessEq' Middle SymbolMid @@ -328,38 +431,17 @@ glyph-block Symbol-Math-Relation : begin select-variant 'eq.at-lteq.lig2' select-variant 'eq.at-gteq.lig2' - define lesslessSW : AdviceStroke 4 - define lesslessSWO : Math.max lesslessSW lessEqDist - define llggHeight : dH * 2 + lessEqDist * 2 - - define [EqEqBarNegationImpl sw y1 y2] : dispiro - widths.center sw - flat (Middle + lessEqDist) (y1 + lesslessSWO) [heading Downward] - flat (Middle - lessEqDist) (y2 - lesslessSWO) [heading Downward] - - define [EqEqBarNegation] : EqEqBarNegationImpl lesslessSW - SymbolMid - dH + lessEqDist * 2 / 3 - SymbolMid - dH - lessEqDist - create-glyph 'lessEqEqUpper' : AsRadical : LessShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist * 1.75) SB RightSB lesslessSW create-glyph 'greaterEqEqUpper' : AsRadical : GreaterShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist * 1.75) SB RightSB lesslessSW - create-glyph 'eqEqLower' : AsRadical : union - HBar SB RightSB (SymbolMid - dH + lessEqDist * 2 / 3) lesslessSW - HBar SB RightSB (SymbolMid - dH - lessEqDist) lesslessSW - create-glyph 'symSymLower' : AsRadical : union - symWave (SymbolMid - dH + lessEqDist * 2 / 3) 1 lesslessSW - symWave (SymbolMid - dH - lessEqDist) 1 lesslessSW - create-glyph 'eqEqBarNegatedLower' : AsRadical : union [refer-glyph 'eqEqLower'] [EqEqBarNegation] - create-glyph 'symSymBarNegatedLower' : AsRadical : union [refer-glyph 'symSymLower'] [EqEqBarNegation] - create-glyph 'lessEqEq' 0x2266 : composite-proc [refer-glyph 'lessEqEqUpper'] [refer-glyph 'eqEqLower'] - create-glyph 'lessEqEqBarNegated' 0x2268 : composite-proc [refer-glyph 'lessEqEqUpper'] [refer-glyph 'eqEqBarNegatedLower'] - create-glyph 'lessSymSym' 0x2A85 : composite-proc [refer-glyph 'lessEqEqUpper'] [refer-glyph 'symSymLower'] - create-glyph 'lessSymSymBarNegated' 0x2A89 : composite-proc [refer-glyph 'lessEqEqUpper'] [refer-glyph 'symSymBarNegatedLower'] - create-glyph 'greaterEqEq' 0x2267 : composite-proc [refer-glyph 'greaterEqEqUpper'] [refer-glyph 'eqEqLower'] - create-glyph 'greaterEqEqBarNegated' 0x2269 : composite-proc [refer-glyph 'greaterEqEqUpper'] [refer-glyph 'eqEqBarNegatedLower'] - create-glyph 'greaterSymSym' 0x2A86 : composite-proc [refer-glyph 'greaterEqEqUpper'] [refer-glyph 'symSymLower'] - create-glyph 'greaterSymSymBarNegated' 0x2A8A : composite-proc [refer-glyph 'greaterEqEqUpper'] [refer-glyph 'symSymBarNegatedLower'] + derive-composites 'lessEqEq' 0x2266 'lessEqEqUpper' 'eqEqLower' + derive-composites 'lessEqEqBarNegated' 0x2268 'lessEqEqUpper' 'eqEqBarNegatedLower' + derive-composites 'lessSymSym' 0x2A85 'lessEqEqUpper' 'symSymLower' + derive-composites 'lessSymSymBarNegated' 0x2A89 'lessEqEqUpper' 'symSymBarNegatedLower' + derive-composites 'greaterEqEq' 0x2267 'greaterEqEqUpper' 'eqEqLower' + derive-composites 'greaterEqEqBarNegated' 0x2269 'greaterEqEqUpper' 'eqEqBarNegatedLower' + derive-composites 'greaterSymSym' 0x2A86 'greaterEqEqUpper' 'symSymLower' + derive-composites 'greaterSymSymBarNegated' 0x2A8A 'greaterEqEqUpper' 'symSymBarNegatedLower' create-glyph 'lessGreater' 0x2276 : glyph-proc include : LessShape (SymbolMid + llggHeight / 2) (SymbolMid - llggHeight / 6 + lessEqDist) SB RightSB lesslessSW @@ -383,6 +465,13 @@ glyph-block Symbol-Math-Relation : begin include : GreaterShape (SymbolMid + dH) (SymbolMid - dH) (SB - lessEqDist / 2) (RightSB - lessEqDist * 2) lesslessSW include : GreaterShape (SymbolMid + dH) (SymbolMid - dH) (SB + lessEqDist * 2) (RightSB + lessEqDist / 2) lesslessSW +glyph-block Symbol-Math-Relation-Precedes-Succeeds : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Symbol-Math-Relation-Common : dH lessEqDist + glyph-block-import Symbol-Math-Relation-Addons : lesslessSW EqEqBarNegation + glyph-block-import Symbol-Math-Relation-Addon-Glyphs + define [PrecedesShapeA top bot l r s cth] : begin local fine : s * cth return : dispiro @@ -422,36 +511,40 @@ glyph-block Symbol-Math-Relation : begin create-glyph 'succeedsEqUpper' : AsRadical : SucceedsShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB create-glyph 'succeedsEqEqUpper' : AsRadical : SucceedsShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist * 1.75) SB RightSB lesslessSW - create-glyph 'precedes.narrow' : composite-proc [refer-glyph 'precedesEqUpper'] [Upright] [Translate 0 (-lessEqDist)] [Italify] - create-glyph 'precedesEq' 0x2AAF : composite-proc [refer-glyph 'precedesEqUpper'] [refer-glyph 'eqLower'] - create-glyph 'precedesEqBarNegated' 0x2AB1 : composite-proc [refer-glyph 'precedesEqUpper'] [refer-glyph 'eqBarNegatedLower'] - create-glyph 'precedesSym' 0x227E : composite-proc [refer-glyph 'precedesEqUpper'] [refer-glyph 'symLower'] - create-glyph 'precedesSymBarNegated' 0x22E8 : composite-proc [refer-glyph 'precedesEqUpper'] [refer-glyph 'symBarNegatedLower'] - create-glyph 'precedesEqSlant' 0x227C : composite-proc [refer-glyph 'precedesEqUpper'] + derive-composites 'precedes.narrow' null 'precedesEqUpper' [ApparentTranslate 0 (-lessEqDist)] + derive-composites 'precedesEq' 0x2AAF 'precedesEqUpper' 'eqLower' + derive-composites 'precedesEqBarNegated' 0x2AB1 'precedesEqUpper' 'eqBarNegatedLower' + derive-composites 'precedesSym' 0x227E 'precedesEqUpper' 'symLower' + derive-composites 'precedesSymBarNegated' 0x22E8 'precedesEqUpper' 'symBarNegatedLower' + derive-composites 'precedesEqSlant' 0x227C 'precedesEqUpper' PrecedesShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) SB RightSB OperatorStroke 1 - create-glyph 'precedesEqEq' 0x2AB3 : composite-proc [refer-glyph 'precedesEqEqUpper'] [refer-glyph 'eqEqLower'] - create-glyph 'precedesEqEqBarNegated' 0x2AB5 : composite-proc [refer-glyph 'precedesEqEqUpper'] [refer-glyph 'eqEqBarNegatedLower'] - create-glyph 'precedesSymSym' 0x2AB7 : composite-proc [refer-glyph 'precedesEqEqUpper'] [refer-glyph 'symSymLower'] - create-glyph 'precedesSymSymBarNegated' 0x2AB9 : composite-proc [refer-glyph 'precedesEqEqUpper'] [refer-glyph 'symSymBarNegatedLower'] + derive-composites 'precedesEqEq' 0x2AB3 'precedesEqEqUpper' 'eqEqLower' + derive-composites 'precedesEqEqBarNegated' 0x2AB5 'precedesEqEqUpper' 'eqEqBarNegatedLower' + derive-composites 'precedesSymSym' 0x2AB7 'precedesEqEqUpper' 'symSymLower' + derive-composites 'precedesSymSymBarNegated' 0x2AB9 'precedesEqEqUpper' 'symSymBarNegatedLower' - create-glyph 'succeeds.narrow' : composite-proc [refer-glyph 'succeedsEqUpper'] [Upright] [Translate 0 (-lessEqDist)] [Italify] - create-glyph 'succeedsEq' 0x2AB0 : composite-proc [refer-glyph 'succeedsEqUpper'] [refer-glyph 'eqLower'] - create-glyph 'sycceedseqBarNegated' 0x2AB2 : composite-proc [refer-glyph 'succeedsEqUpper'] [refer-glyph 'eqBarNegatedLower'] - create-glyph 'succeedsSym' 0x227F : composite-proc [refer-glyph 'succeedsEqUpper'] [refer-glyph 'symLower'] - create-glyph 'succeedsSymBarNegated' 0x22E9 : composite-proc [refer-glyph 'succeedsEqUpper'] [refer-glyph 'symBarNegatedLower'] - create-glyph 'succeedsEqSlant' 0x227D : composite-proc [refer-glyph 'succeedsEqUpper'] + derive-composites 'succeeds.narrow' null 'succeedsEqUpper' [ApparentTranslate 0 (-lessEqDist)] + derive-composites 'succeedsEq' 0x2AB0 'succeedsEqUpper' 'eqLower' + derive-composites 'succeedsEqBarNegated' 0x2AB2 'succeedsEqUpper' 'eqBarNegatedLower' + derive-composites 'succeedsSym' 0x227F 'succeedsEqUpper' 'symLower' + derive-composites 'succeedsSymBarNegated' 0x22E9 'succeedsEqUpper' 'symBarNegatedLower' + derive-composites 'succeedsEqSlant' 0x227D 'succeedsEqUpper' SucceedsShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) SB RightSB OperatorStroke 1 - create-glyph 'succeedsEqEq' 0x2AB4 : composite-proc [refer-glyph 'succeedsEqEqUpper'] [refer-glyph 'eqEqLower'] - create-glyph 'succeedsEqEqBarNegated' 0x2AB6 : composite-proc [refer-glyph 'succeedsEqEqUpper'] [refer-glyph 'eqEqBarNegatedLower'] - create-glyph 'succeedsSymSym' 0x2AB8 : composite-proc [refer-glyph 'succeedsEqEqUpper'] [refer-glyph 'symSymLower'] - create-glyph 'succeedsSymSymBarNegated' 0x2ABA : composite-proc [refer-glyph 'succeedsEqEqUpper'] [refer-glyph 'symSymBarNegatedLower'] + derive-composites 'succeedsEqEq' 0x2AB4 'succeedsEqEqUpper' 'eqEqLower' + derive-composites 'succeedsEqEqBarNegated' 0x2AB6 'succeedsEqEqUpper' 'eqEqBarNegatedLower' + derive-composites 'succeedsSymSym' 0x2AB8 'succeedsEqEqUpper' 'symSymLower' + derive-composites 'succeedsSymSymBarNegated' 0x2ABA 'succeedsEqEqUpper' 'symSymBarNegatedLower' turned 'turnSucceedsEqSlant' 0x22DE 'succeedsEqSlant' Middle SymbolMid turned 'turnPrecedesEqSlant' 0x22DF 'precedesEqSlant' Middle SymbolMid +glyph-block Symbol-Math-Relation-Precedes-Succeeds-Under-Relation : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Symbol-Math-Relation-Common : dH define [PrecedesUnderRelationShape t b l r s] : glyph-proc local yBias : s * 0.375 @@ -475,54 +568,16 @@ glyph-block Symbol-Math-Relation : begin include : PrecedesUnderRelationShape t b l r s include : FlipAround [mix l r 0.5] [mix t b 0.5] - create-glyph 'precedesUnderRelation' 0x22B0 : AsRadical : PrecedesUnderRelationShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB OperatorStroke - create-glyph 'succeedsUnderRelation' 0x22B1 : AsRadical : SucceedsUnderRelationShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB OperatorStroke + create-glyph 'precedesUnderRelation' 0x22B0 : AsRadical + PrecedesUnderRelationShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB OperatorStroke + create-glyph 'succeedsUnderRelation' 0x22B1 : AsRadical + SucceedsUnderRelationShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB OperatorStroke - - - create-glyph 'sym' 0x223C : symWave SymbolMid 1 - create-glyph 'flipSym' 0x223D : symWave SymbolMid (-1) - - VDual 'approx' 0x2248 'sym' approxDist - - create-glyph : glyph-proc - include : symWave (SymbolMid + approxDist) 1 - include : symWave SymbolMid 1 - create-derived 'aapprox' 0x224B : symWave (SymbolMid - approxDist) 1 - create-derived 'approxBar' 0x224A : HBar SB RightSB (SymbolMid - approxDist) OperatorStroke - - create-glyph 'barSym' 0x2242 : glyph-proc - include [refer-glyph 'sym'] AS_BASE - include : ApparentTranslate 0 (-approxDist / 2) - include : HBar SB RightSB (SymbolMid + approxDist / 2) OperatorStroke - - create-glyph 'symEq' 0x2243 : glyph-proc - include [refer-glyph 'sym'] AS_BASE - include : ApparentTranslate 0 (approxDist / 2) - include : HBar SB RightSB (SymbolMid - approxDist / 2) OperatorStroke - - create-glyph 'symEqEq' 0x2245 : glyph-proc - local sympShift : approxDist + EqualHalfSpace * 1.5 - include [refer-glyph 'sym'] AS_BASE - include : ApparentTranslate 0 (sympShift / 2) - include : HBar SB RightSB (SymbolMid - sympShift / 2 + EqualHalfSpace * 1.5) OperatorStroke - include : HBar SB RightSB (SymbolMid - sympShift / 2) OperatorStroke - - create-derived 'symEqEqBarNegated' 0x2246 : EqEqBarNegationImpl OperatorStroke - SymbolMid - sympShift / 2 + EqualHalfSpace * 1.5 - SymbolMid - sympShift / 2 - - create-glyph 'flipSymEq' 0x22CD : glyph-proc - include [refer-glyph 'flipSym'] AS_BASE - include : ApparentTranslate 0 (approxDist / 2) - include : HBar SB RightSB (SymbolMid - approxDist / 2) OperatorStroke - - create-glyph 'flipSymEqEq' 0x224C : glyph-proc - local sympShift : approxDist + EqualHalfSpace * 1.5 - include [refer-glyph 'flipSym'] AS_BASE - include : ApparentTranslate 0 (sympShift / 2) - include : HBar SB RightSB (SymbolMid - sympShift / 2 + EqualHalfSpace * 1.5) OperatorStroke - include : HBar SB RightSB (SymbolMid - sympShift / 2) OperatorStroke +glyph-block Symbol-Math-Relation-Subset : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Symbol-Math-Relation-Common : dH dHSubstSimple lessEqDist dHElem + glyph-block-import Symbol-Math-Relation-Addon-Glyphs define [SubsetShape] : params [top bot [sw OperatorStroke] [offset 0]] : dispiro widths.lhs sw @@ -534,19 +589,10 @@ glyph-block Symbol-Math-Relation : begin flat (SB + offset + (top - bot) / 2 - offset) (bot + offset) curl RightSB (bot + offset) [heading Rightward] - define [PrefixShape top bot sw] : union - VBarLeft SB bot top [fallback sw OperatorStroke] - HBarTop SB RightSB top [fallback sw OperatorStroke] - HBarBottom SB RightSB bot [fallback sw OperatorStroke] - define [SupsetShape top bot sw] : glyph-proc include : SubsetShape top bot sw include : FlipAround Middle [mix top bot 0.5] - define [SuffixShape top bot sw] : glyph-proc - include : PrefixShape top bot sw - include : FlipAround Middle [mix top bot 0.5] - create-glyph 'subst' 0x2282 : SubsetShape (SymbolMid + dHSubstSimple) (SymbolMid - dHSubstSimple) create-glyph 'doubleSubst' 0x22D0 : glyph-proc local sw : AdviceStroke 6 @@ -558,13 +604,15 @@ glyph-block Symbol-Math-Relation : begin turned 'supst' 0x2283 'subst' Middle SymbolMid turned 'doubleSupst' 0x22D1 'doubleSubst' Middle SymbolMid - create-glyph 'substBarUpper' : AsRadical : SubsetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) - create-glyph 'supstBarUpper' : AsRadical : SupsetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) + create-glyph 'substBarUpper' : AsRadical + SubsetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) + create-glyph 'supstBarUpper' : AsRadical + SupsetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) - create-glyph 'substBar' 0x2286 : composite-proc [refer-glyph 'substBarUpper'] [refer-glyph 'eqLower'] - create-glyph 'substBarNegated' 0x228A : composite-proc [refer-glyph 'substBarUpper'] [refer-glyph 'eqBarNegatedLower'] - create-glyph 'supstBar' 0x2287 : composite-proc [refer-glyph 'supstBarUpper'] [refer-glyph 'eqLower'] - create-glyph 'supstBarNegated' 0x228B : composite-proc [refer-glyph 'supstBarUpper'] [refer-glyph 'eqBarNegatedLower'] + derive-composites 'substBar' 0x2286 'substBarUpper' 'eqLower' + derive-composites 'substBarNegated' 0x228A 'substBarUpper' 'eqBarNegatedLower' + derive-composites 'supstBar' 0x2287 'supstBarUpper' 'eqLower' + derive-composites 'supstBarNegated' 0x228B 'supstBarUpper' 'eqBarNegatedLower' create-glyph 'element' 0x2208 : glyph-proc include : SubsetShape (SymbolMid + dHElem) (SymbolMid - dHElem) @@ -578,16 +626,35 @@ glyph-block Symbol-Math-Relation : begin turned 'turnSmallElement' 0x220D 'smallElement' Middle SymbolMid - create-glyph 'prefix' 0x228F : PrefixShape (SymbolMid + dHSubstSimple) (SymbolMid - dHSubstSimple) - create-glyph 'suffix' 0x2290 : SuffixShape (SymbolMid + dHSubstSimple) (SymbolMid - dHSubstSimple) +glyph-block Symbol-Math-Relation-Precedes-Succeeds-Prefix-Suffix : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Symbol-Math-Relation-Common : dH dHSubstSimple lessEqDist dHElem + glyph-block-import Symbol-Math-Relation-Addon-Glyphs - create-glyph 'prefixBarUpper' : AsRadical : PrefixShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) - create-glyph 'suffixBarUpper' : AsRadical : SuffixShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) + define [PrefixShape top bot sw] : union + VBarLeft SB bot top [fallback sw OperatorStroke] + HBarTop SB RightSB top [fallback sw OperatorStroke] + HBarBottom SB RightSB bot [fallback sw OperatorStroke] - create-glyph 'prefixBar' 0x2291 : composite-proc [refer-glyph 'prefixBarUpper'] [refer-glyph 'eqLower'] - create-glyph 'prefixBarNegated' 0x22E4 : composite-proc [refer-glyph 'prefixBarUpper'] [refer-glyph 'eqBarNegatedLower'] - create-glyph 'suffixBar' 0x2292 : composite-proc [refer-glyph 'suffixBarUpper'] [refer-glyph 'eqLower'] - create-glyph 'suffixBarNegated' 0x22E5 : composite-proc [refer-glyph 'suffixBarUpper'] [refer-glyph 'eqBarNegatedLower'] + define [SuffixShape top bot sw] : glyph-proc + include : PrefixShape top bot sw + include : FlipAround Middle [mix top bot 0.5] + + create-glyph 'prefix' 0x228F + PrefixShape (SymbolMid + dHSubstSimple) (SymbolMid - dHSubstSimple) + create-glyph 'suffix' 0x2290 + SuffixShape (SymbolMid + dHSubstSimple) (SymbolMid - dHSubstSimple) + + create-glyph 'prefixBarUpper' : AsRadical + PrefixShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) + create-glyph 'suffixBarUpper' : AsRadical + SuffixShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) + + derive-composites 'prefixBar' 0x2291 'prefixBarUpper' 'eqLower' + derive-composites 'prefixBarNegated' 0x22E4 'prefixBarUpper' 'eqBarNegatedLower' + derive-composites 'suffixBar' 0x2292 'suffixBarUpper' 'eqLower' + derive-composites 'suffixBarNegated' 0x22E5 'suffixBarUpper' 'eqBarNegatedLower' create-glyph 'prefixElement' 0x22FF : glyph-proc include : PrefixShape (SymbolMid + dHElem) (SymbolMid - dHElem) @@ -598,3 +665,32 @@ glyph-block Symbol-Math-Relation : begin MarkSet.plus refer-glyph 'underlineBelow' clear-anchors + + +glyph-block Symbol-Math-Relation-Addon-Glyphs : begin + glyph-block-import CommonShapes + glyph-block-import Common-Derivatives + glyph-block-import Symbol-Math-Relation-Common : dH lessEqDist + glyph-block-import Symbol-Math-Relation-Sym : symWave + glyph-block-import Symbol-Math-Relation-Addons : lesslessSW EqEqBarNegation + + define [BarNegator symbolBottom dist] : begin + local swo : Math.max (OperatorStroke * 1.5) (dist * 1.5) + return : dispiro + widths.center OperatorStroke + flat (Middle + dist) (symbolBottom - dist + swo) [heading Downward] + flat (Middle - dist) (symbolBottom - dist - swo) [heading Downward] + + create-glyph 'eqLower' : AsRadical : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke + create-glyph 'eqBarNegatedLower' : AsRadical : union [refer-glyph 'eqLower'] [BarNegator (SymbolMid - dH) lessEqDist] + create-glyph 'symLower' : AsRadical : symWave (SymbolMid - dH - lessEqDist) 1 + create-glyph 'symBarNegatedLower' : AsRadical : union [refer-glyph 'symLower'] [BarNegator (SymbolMid - dH) lessEqDist] + + create-glyph 'eqEqLower' : AsRadical : union + HBar SB RightSB (SymbolMid - dH + lessEqDist * 2 / 3) lesslessSW + HBar SB RightSB (SymbolMid - dH - lessEqDist) lesslessSW + create-glyph 'symSymLower' : AsRadical : union + symWave (SymbolMid - dH + lessEqDist * 2 / 3) 1 lesslessSW + symWave (SymbolMid - dH - lessEqDist) 1 lesslessSW + create-glyph 'eqEqBarNegatedLower' : AsRadical : union [refer-glyph 'eqEqLower'] [EqEqBarNegation] + create-glyph 'symSymBarNegatedLower' : AsRadical : union [refer-glyph 'symSymLower'] [EqEqBarNegation] \ No newline at end of file diff --git a/font-src/glyphs/symbol/punctuation/ellipsis.ptl b/font-src/glyphs/symbol/punctuation/ellipsis.ptl index b0fb9f857..26150b7bd 100644 --- a/font-src/glyphs/symbol/punctuation/ellipsis.ptl +++ b/font-src/glyphs/symbol/punctuation/ellipsis.ptl @@ -44,18 +44,18 @@ glyph-block Symbol-Punctuation-Ellipsis : begin include : DotAt (MosaicWidth / 2) radius (radius - O) include : DotAt right radius (radius - O) - create-derived [MangleName 'mathCDots'] [MangleUnicode 0x22EF] + create-forked-glyph [MangleName 'mathCDots'] [MangleUnicode 0x22EF] ApparentTranslate 0 (SymbolMid - radius) create-glyph : glyph-proc set-width MosaicWidth local left : mix 0 MosaicWidth (1 / 6) local right : mix 0 MosaicWidth (5 / 6) - create-derived [MangleName 'mathCVDots'] [MangleUnicode 0x22EE] : begin + create-forked-glyph [MangleName 'mathCVDots'] [MangleUnicode 0x22EE] : begin VerticalThreeDotsShape left right 0 OperBot OperTop - create-derived [MangleName 'mathCD1Dots'] [MangleUnicode 0x22F0] : begin + create-forked-glyph [MangleName 'mathCD1Dots'] [MangleUnicode 0x22F0] : begin VerticalThreeDotsShape left right (-1) OperBot OperTop - create-derived [MangleName 'mathCD2Dots'] [MangleUnicode 0x22F1] : begin + create-forked-glyph [MangleName 'mathCD2Dots'] [MangleUnicode 0x22F1] : begin VerticalThreeDotsShape left right (+1) OperBot OperTop create-glyph 'tricolon' 0x205D : VerticalThreeDotsShape 0 Width 0 0 XH diff --git a/font-src/glyphs/symbol/punctuation/paragraph.ptl b/font-src/glyphs/symbol/punctuation/paragraph.ptl index ebdbd7106..e45c78613 100644 --- a/font-src/glyphs/symbol/punctuation/paragraph.ptl +++ b/font-src/glyphs/symbol/punctuation/paragraph.ptl @@ -21,20 +21,20 @@ glyph-block Symbol-Punctuation-ParagraphAndSection : begin arcvh straight.right.end (Middle - sw / 4) (CAP * 0.5) [heading Rightward] - create-derived 'paragraph.high' : glyph-proc + create-forked-glyph 'paragraph.high' : glyph-proc include : VBar (Middle + sw / 4) 0 CAP sw include : VBar (RightSB - sw / 2) 0 CAP sw - create-derived 'paragraph.low' : glyph-proc + create-forked-glyph 'paragraph.low' : glyph-proc include : VBar (Middle + sw / 4) Descender CAP sw include : VBar (RightSB - sw / 2) Descender CAP sw select-variant 'paragraph' 0xB6 create-glyph : glyph-proc - create-derived 'revertParagraph.high' : glyph-proc + create-forked-glyph 'revertParagraph.high' : glyph-proc include [refer-glyph 'paragraph.high'] AS_BASE include : FlipAround Middle (CAP / 2) (-1) 1 - create-derived 'revertParagraph.low' : glyph-proc + create-forked-glyph 'revertParagraph.low' : glyph-proc include [refer-glyph 'paragraph.low'] AS_BASE include : FlipAround Middle (CAP / 2) (-1) 1 diff --git a/font-src/glyphs/symbol/punctuation/percentages.ptl b/font-src/glyphs/symbol/punctuation/percentages.ptl index 4f9919a06..7e3ef1c21 100644 --- a/font-src/glyphs/symbol/punctuation/percentages.ptl +++ b/font-src/glyphs/symbol/punctuation/percentages.ptl @@ -102,11 +102,11 @@ glyph-block Symbol-Punctuation-Percentages : begin include : OShape (CAP / 2 - halfGapRing) 0 (m + halfGapRing + 2 * perMilleOffset) (r + 2 * perMilleOffset) swRing sma smb include : Translate ((WideWidth0 - r - 2 * perMilleOffset) / 2) 0 - create-derived 'percent.ringsContinuousSlashAlsoConnected' : ConnnectedBar - create-derived 'permille.WWID.ringsContinuousSlash' : PerMilleProc - create-derived 'basepoint.WWID.ringsContinuousSlash' : BasePointProc - create-derived 'permille.WWID.ringsContinuousSlashAlsoConnected' : composite-proc [ConnnectedBar] [PerMilleProc] - create-derived 'basepoint.WWID.ringsContinuousSlashAlsoConnected' : composite-proc [ConnnectedBar] [BasePointProc] + create-forked-glyph 'percent.ringsContinuousSlashAlsoConnected' : ConnnectedBar + create-forked-glyph 'permille.WWID.ringsContinuousSlash' : PerMilleProc + create-forked-glyph 'basepoint.WWID.ringsContinuousSlash' : BasePointProc + create-forked-glyph 'permille.WWID.ringsContinuousSlashAlsoConnected' : composite-proc [ConnnectedBar] [PerMilleProc] + create-forked-glyph 'basepoint.WWID.ringsContinuousSlashAlsoConnected' : composite-proc [ConnnectedBar] [BasePointProc] select-variant 'permille.WWID' [WideUnicode 0x2030] (follow -- 'permille.WWID') select-variant 'basepoint.WWID' [WideUnicode 0x2031] (follow -- 'permille.WWID') @@ -162,7 +162,7 @@ glyph-block Symbol-Punctuation-Percentages : begin curl r (CAP - otop) [widths.center sw] # bottom row - create-derived 'permille.NWID.ringsContinuousSlash' : glyph-proc + create-forked-glyph 'permille.NWID.ringsContinuousSlash' : glyph-proc local l1 : l - O local r2 r local gap : (SB / 2 - O * 2) * para.diversityM @@ -173,7 +173,7 @@ glyph-block Symbol-Punctuation-Percentages : begin include : OShape otop 0 l1 r1 swp sma smb include : OShape otop 0 l2 r2 swp sma smb - create-derived 'basepoint.NWID.ringsContinuousSlash' : glyph-proc + create-forked-glyph 'basepoint.NWID.ringsContinuousSlash' : glyph-proc local l1 : l - O local r3 r local gap : (SB / 2 - O) * para.diversityM diff --git a/font-src/glyphs/symbol/punctuation/small.ptl b/font-src/glyphs/symbol/punctuation/small.ptl index 88387df3a..f65de56e3 100644 --- a/font-src/glyphs/symbol/punctuation/small.ptl +++ b/font-src/glyphs/symbol/punctuation/small.ptl @@ -93,7 +93,7 @@ glyph-block Symbol-Punctuation-Small : begin include : refer-glyph "period" include : refer-glyph "xhPeriod" - create-derived 'colon.mid' : glyph-proc + create-forked-glyph 'colon.mid' : glyph-proc include : ApparentTranslate 0 (SymbolMid - XH / 2) create-glyph 'hollowColon' 0x2982 : glyph-proc diff --git a/font-src/meta/macros.ptl b/font-src/meta/macros.ptl index a6d9f9bb5..6966cc38e 100644 --- a/font-src/meta/macros.ptl +++ b/font-src/meta/macros.ptl @@ -97,16 +97,16 @@ define-macro create-aliased-glyph : syntax-rules [this.include currentGlyph true true] [this.cloneRankFromGlyph currentGlyph] ]] -define-macro create-derived : syntax-rules - `[create-derived @body] : begin +define-macro create-forked-glyph : syntax-rules + `[create-forked-glyph @body] : begin if [not externEnv.$nWFGlyphs$] : set externEnv.$nWFGlyphs$ 0 inc externEnv.$nWFGlyphs$ local f0 : '.' + [[env.macros.get 'input-path']].1 + '.' local tcn {".quote" (".WF" + f0 + externEnv.$nWFGlyphs$)} - dirty `[create-derived @tcn null @[formOf body]] - `[create-derived @name @body] : begin - dirty `[create-derived @[formOf name] null @[formOf body]] - `[create-derived @name @code @body] : begin + dirty `[create-forked-glyph @tcn null @[formOf body]] + `[create-forked-glyph @name @body] : begin + dirty `[create-forked-glyph @[formOf name] null @[formOf body]] + `[create-forked-glyph @name @code @body] : begin dirty `[$createAndSaveGlyphImpl$ @[formOf name] @[formOf code] [lambda : begin [this.include currentGlyph true true] [this.cloneRankFromGlyph currentGlyph] @@ -129,7 +129,7 @@ define-macro glyph-block-import : syntax-rules define allExports : object Common-Derivatives `[select-variant orthographic-italic refer-glyph query-glyph - alias turned HDual HCombine VDual VCombine with-related-glyphs build-related-composite + alias turned HDual HCombine VDual VCombine derive-glyphs derive-composites glyph-is-needed HalfAdvance TurnMarks] CommonShapes `[Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt