Optimize math symbols' footprint; Refine shape of angled arrows

This commit is contained in:
be5invis 2020-08-04 23:21:51 -07:00
parent 8b937efbd8
commit 554a180e76
6 changed files with 159 additions and 163 deletions

View file

@ -1,5 +1,7 @@
"use strict"; "use strict";
const { Radical } = require("../../support/gr");
module.exports = function gcFont(gs, excludedChars, restFont, cfg) { module.exports = function gcFont(gs, excludedChars, restFont, cfg) {
markSweepOtl(restFont.GSUB); markSweepOtl(restFont.GSUB);
markSweepOtl(restFont.GPOS); markSweepOtl(restFont.GPOS);
@ -64,9 +66,14 @@ function mark(gs, excludedChars, restFont, cfg) {
function markInitial(gs, excludedChars) { function markInitial(gs, excludedChars) {
let sink = new Set(); let sink = new Set();
for (const g of gs) { for (const g of gs) {
if (!g) continue;
if (g.glyphRank > 0) sink.add(g.name); if (g.glyphRank > 0) sink.add(g.name);
if (!g || !g.unicode) continue; if (Radical.get(g)) sink.add(g.name);
for (const u of g.unicode) if (!excludedChars.has(u)) sink.add(g.name); if (g.unicode) {
for (const u of g.unicode) {
if (!excludedChars.has(u)) sink.add(g.name);
}
}
} }
return sink; return sink;
} }

View file

@ -3,7 +3,7 @@ $$include '../meta/macros.ptl'
import '../support/transform' as Transform import '../support/transform' as Transform
import [mix linreg clamp fallback] from '../support/utils' import [mix linreg clamp fallback] from '../support/utils'
import [Cv AnyDerivingCv] from '../support/gr' import [Cv AnyDerivingCv Radical] from '../support/gr'
import [designParameters] from '../meta/aesthetics' import [designParameters] from '../meta/aesthetics'
glyph-module glyph-module
@ -642,9 +642,7 @@ glyph-block CommonShapes : begin
include giz include giz
include g include g
define [WithTransform tfm gr] : new-glyph : glyph-proc define [WithTransform tfm gr] : glyph-proc : include : new-glyph : composite-proc gr tfm
include gr
include tfm
define [ReverseContours gr] : begin define [ReverseContours gr] : begin
local g : new-glyph gr local g : new-glyph gr
@ -656,4 +654,8 @@ glyph-block CommonShapes : begin
set currentGlyph.markAnchors {.} set currentGlyph.markAnchors {.}
set currentGlyph.markBnchors {.} set currentGlyph.markBnchors {.}
glyph-block-export Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterBottomSerif DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif AIVSerifs AIHSerifs AINSerifs AICyrISerifs AIMSerifs HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LegShape LeftHook HooktopLeftBar FlatSlashShape hookstart hookend CyrDescender FlipAround ScaleAround Realign ForceUpright diagCor CreateWaveShape NameUni PointingTo WithAIHSerifsMask WithTransform ReverseContours clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape OBarRightRoundedShape define [AsRadical gr] : glyph-proc
Radical.set currentGlyph
include gr true true
glyph-block-export Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterBottomSerif DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif AIVSerifs AIHSerifs AINSerifs AICyrISerifs AIMSerifs HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LegShape LeftHook HooktopLeftBar FlatSlashShape hookstart hookend CyrDescender FlipAround ScaleAround Realign ForceUpright diagCor CreateWaveShape NameUni PointingTo WithAIHSerifsMask WithTransform ReverseContours clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape OBarRightRoundedShape AsRadical

View file

@ -210,10 +210,10 @@ glyph-block Symbol-Arrow : begin
include : shape xm ym x1 y1 arrowSize include : shape xm ym x1 y1 arrowSize
include : shape xm ym x2 y2 arrowSize include : shape xm ym x2 y2 arrowSize
define [anglearrow shape bar id unicode x1 y1 x2 y2 x3 y3] define [anglearrow shape bar id unicode x1 y1 x2 y2 x3 y3 size]
create-glyph id unicode : glyph-proc create-glyph id unicode : glyph-proc
set-width MosaicWidth set-width MosaicWidth
include : shape x2 y2 x3 y3 arrowSize include : shape x2 y2 x3 y3 size
include : bar x1 y1 x2 y2 include : bar x1 y1 x2 y2
arrow ArrowShape [MangleName 'arrowleft'] [MangleUnicode 0x2190] arrowRSB SymbolMid arrowSB SymbolMid arrow ArrowShape [MangleName 'arrowleft'] [MangleUnicode 0x2190] arrowRSB SymbolMid arrowSB SymbolMid
@ -229,10 +229,19 @@ glyph-block Symbol-Arrow : begin
arrow [HookArrowShape 1] [MangleName 'hookarrowleft'] [MangleUnicode 0x21A9] arrowRSB SymbolMid arrowSB SymbolMid arrow [HookArrowShape 1] [MangleName 'hookarrowleft'] [MangleUnicode 0x21A9] arrowRSB SymbolMid arrowSB SymbolMid
arrow [HookArrowShape (-1)] [MangleName 'hookarrowright'] [MangleUnicode 0x21AA] arrowSB SymbolMid arrowRSB SymbolMid arrow [HookArrowShape (-1)] [MangleName 'hookarrowright'] [MangleUnicode 0x21AA] arrowSB SymbolMid arrowRSB SymbolMid
anglearrow ArrowShape [lambda [x1 y1 x2 y2] : VBarLeft x1 y1 y2] [MangleName 'arrow-up-angle-right'] [MangleUnicode 0x21b1] arrowSB arrowBot arrowSB (arrowTop - arrowSize) arrowRSB (arrowTop - arrowSize) do "Bend and Angle arrows"
anglearrow ArrowShape [lambda [x1 y1 x2 y2] : VBarRight x1 y1 y2] [MangleName 'arrow-up-angle-left'] [MangleUnicode 0x21b0] arrowRSB arrowBot arrowRSB (arrowTop - arrowSize) arrowSB (arrowTop - arrowSize) define bendSize : mix OperatorStroke arrowSize 0.75
anglearrow ArrowShape [lambda [x1 y1 x2 y2] : VBarLeft x1 y1 y2] [MangleName 'arrow-down-angle-right'] [MangleUnicode 0x21b3] arrowSB arrowTop arrowSB (arrowBot + arrowSize) arrowRSB (arrowBot + arrowSize) define bendL : mix arrowMidX arrowSB [Math.max (bendSize / (arrowMidX - arrowSB)) : Math.pow 0.6 (2 / MosaicWidthScalar)]
anglearrow ArrowShape [lambda [x1 y1 x2 y2] : VBarRight x1 y1 y2] [MangleName 'arrow-down-angle-left'] [MangleUnicode 0x21b2] arrowRSB arrowTop arrowRSB (arrowBot + arrowSize) arrowSB (arrowBot + arrowSize) define bendR : mix arrowMidX arrowRSB [Math.max (bendSize / (arrowMidX - arrowSB)) : Math.pow 0.6 (2 / MosaicWidthScalar)]
define [VBR x1 y1 x2 y2] : VBarRight x1 y1 y2 OperatorStroke
define [VBL x1 y1 x2 y2] : VBarLeft x1 y1 y2 OperatorStroke
define [HBT x1 y1 x2 y2] : HBarTop x1 x2 y1 OperatorStroke
anglearrow ArrowShape VBR [MangleName 'arrow-up-angle-bend-left'] [MangleUnicode 0x21b0] bendR arrowBot bendR (arrowTop - bendSize) bendL (arrowTop - bendSize) bendSize
anglearrow ArrowShape VBL [MangleName 'arrow-up-angle-bend-right'] [MangleUnicode 0x21b1] bendL arrowBot bendL (arrowTop - bendSize) bendR (arrowTop - bendSize) bendSize
anglearrow ArrowShape VBR [MangleName 'arrow-down-angle-bend-left'] [MangleUnicode 0x21b2] bendR arrowTop bendR (arrowBot + bendSize) bendL (arrowBot + bendSize) bendSize
anglearrow ArrowShape VBL [MangleName 'arrow-down-angle-bend-right'] [MangleUnicode 0x21b3] bendL arrowTop bendL (arrowBot + bendSize) bendR (arrowBot + bendSize) bendSize
anglearrow ArrowShape HBT [MangleName 'arrow-right-angle-down'] [MangleUnicode 0x21b4] arrowSB arrowTop (arrowRSB - arrowSize) arrowTop (arrowRSB - arrowSize) arrowBot arrowSize
anglearrow ArrowShape VBR [MangleName 'arrow-down-angle-left'] [MangleUnicode 0x21b5] arrowRSB arrowTop arrowRSB (arrowBot + arrowSize) arrowSB (arrowBot + arrowSize) arrowSize
arrow ArrowShape [MangleName 'arrowupleft'] [MangleUnicode 0x2196] arrowDiagRSB arrowDiagBot arrowDiagSB arrowDiagTop arrow ArrowShape [MangleName 'arrowupleft'] [MangleUnicode 0x2196] arrowDiagRSB arrowDiagBot arrowDiagSB arrowDiagTop
arrow ArrowShape [MangleName 'arrowupright'] [MangleUnicode 0x2197] arrowDiagSB arrowDiagBot arrowDiagRSB arrowDiagTop arrow ArrowShape [MangleName 'arrowupright'] [MangleUnicode 0x2197] arrowDiagSB arrowDiagBot arrowDiagRSB arrowDiagTop

View file

@ -12,22 +12,27 @@ glyph-block NotGlyphFn : begin
glyph-block-export notGlyph glyph-block-export notGlyph
define [notGlyphGeneric newid unicode oldid top bot prop shift F] : begin define [notGlyphGeneric newid unicode oldid top bot prop shift F] : begin
create-glyph (newid || 'not' + oldid) unicode : glyph-proc local component : F
include : refer-glyph oldid
include : F
fallback top BgOpTop fallback top BgOpTop
fallback bot BgOpBot fallback bot BgOpBot
mix SB RightSB [fallback prop 0.25] mix SB RightSB [fallback prop 0.25]
mix RightSB SB [fallback prop 0.25] mix RightSB SB [fallback prop 0.25]
adviceBlackness 4 adviceBlackness 4
fallback shift 0 fallback shift 0
create-glyph (newid || 'not' + oldid) unicode : glyph-proc
include : refer-glyph oldid
include component
define [notGlyph] : params [newid unicode oldid top bot prop shift] : begin define [notGlyph] : params [newid unicode oldid top bot prop shift] : begin
notGlyphGeneric newid unicode oldid top bot prop shift notGlyphGeneric newid unicode oldid top bot prop shift
lambda [t b l r sw sh] : dispiro lambda [t b l r sw sh] : begin
local slashBarName ".NotGlyphSlash{\(l),\(r),\(t),\(b),\(sw)}"
if [not : query-glyph slashBarName] : begin
create-glyph slashBarName : AsRadical : dispiro
widths.center sw widths.center sw
flat (sh + l) b flat l b
curl (sh + r) t curl r t
return : WithTransform [Translate sh 0] [refer-glyph slashBarName]
define [notGlyph.right] : params [newid unicode oldid top bot prop shift] : begin define [notGlyph.right] : params [newid unicode oldid top bot prop shift] : begin
notGlyph newid unicode oldid top bot prop (-OperatorStroke * 0.5) notGlyph newid unicode oldid top bot prop (-OperatorStroke * 0.5)
@ -989,60 +994,49 @@ glyph-block Symbol-Math-Relation : begin
create-glyph 'normalSupersetOf' 0x22B3 : glyph-proc create-glyph 'normalSupersetOf' 0x22B3 : glyph-proc
include : NormalSupersetShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB include : NormalSupersetShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB
create-glyph : glyph-proc create-glyph 'lessEqUpper' : AsRadical : LessShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB
include : LessShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB create-glyph 'greaterEqUpper' : AsRadical : GreaterShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB
create-derived 'less.narrow' : glyph-proc create-glyph 'normalSubsetUpper' : AsRadical : NormalSubsetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB
include : Upright create-glyph 'normalSupersetUpper' : AsRadical : NormalSupersetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB
include : Translate 0 (-lessEqDist) create-glyph 'eqLower' : AsRadical : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke
include : Italify create-glyph 'eqBarNegatedLower' : AsRadical : union [refer-glyph 'eqLower'] [BarNegator (SymbolMid - dH) lessEqDist]
create-derived 'lessEq' 0x2264 : glyph-proc create-glyph 'symLower' : AsRadical : symWave (SymbolMid - dH - lessEqDist) 1
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke create-glyph 'symBarNegatedLower' : AsRadical : union [refer-glyph 'symLower'] [BarNegator (SymbolMid - dH) lessEqDist]
create-derived 'lessEqBarNegated' 0x2A87 : BarNegator (SymbolMid - dH) lessEqDist
create-derived 'lessSym' 0x2272 : glyph-proc
include : symWave (SymbolMid - dH - lessEqDist) 1
create-derived 'lessSymBarNegated' 0x22E6 : BarNegator (SymbolMid - dH) lessEqDist
create-derived 'lessEqslant' 0x2A7D : glyph-proc
include : LessShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) SB RightSB OperatorStroke
create-glyph 'normalSubsetEq' 0x22B4 : glyph-proc create-glyph 'less.narrow' : composite-proc [refer-glyph 'lessEqUpper'] [Upright] [Translate 0 (-lessEqDist)] [Italify]
include : NormalSubsetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB create-glyph 'lessEq' 0x2264 : composite-proc [refer-glyph 'lessEqUpper'] [refer-glyph 'eqLower']
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke 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']
LessShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) SB RightSB OperatorStroke
create-glyph : glyph-proc create-glyph 'greater.narrow' : composite-proc [refer-glyph 'greaterEqUpper'] [Upright] [Translate 0 (-lessEqDist)] [Italify]
include : GreaterShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB create-glyph 'greaterEq' 0x2265 : composite-proc [refer-glyph 'greaterEqUpper'] [refer-glyph 'eqLower']
create-derived 'greater.narrow' : glyph-proc create-glyph 'greaterEqBarNegated' 0x2A88 : composite-proc [refer-glyph 'greaterEqUpper'] [refer-glyph 'eqBarNegatedLower']
include : Upright create-glyph 'greaterSym' 0x2273 : composite-proc [refer-glyph 'greaterEqUpper'] [refer-glyph 'symLower']
include : Translate 0 (-lessEqDist) create-glyph 'greaterSymBarNegated' 0x22E7 : composite-proc [refer-glyph 'greaterEqUpper'] [refer-glyph 'symBarNegatedLower']
include : Italify create-glyph 'greaterEqslant' 0x2A7E : composite-proc [refer-glyph 'greaterEqUpper']
create-derived 'greaterEq' 0x2265 : glyph-proc GreaterShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) SB RightSB OperatorStroke
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke
create-derived 'greaterEqBarNegated' 0x2A88 : BarNegator (SymbolMid - dH) lessEqDist
create-derived 'greaterSym' 0x2273 : glyph-proc
include : symWave (SymbolMid - dH - lessEqDist) 1
create-derived 'greaterSymBarNegated' 0x22E7 : BarNegator (SymbolMid - dH) lessEqDist
create-derived 'greaterEqslant' 0x2A7E : glyph-proc
include : GreaterShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) SB RightSB OperatorStroke
create-glyph 'normalSupersetEq' 0x22B5 : glyph-proc create-glyph 'normalSubsetEq' 0x22B4 : composite-proc [refer-glyph 'normalSubsetUpper'] [refer-glyph 'eqLower']
include : NormalSupersetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB create-glyph 'normalSupersetEq' 0x22B5 : composite-proc [refer-glyph 'normalSupersetUpper'] [refer-glyph 'eqLower']
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke
# Ligation do "Ligation Glyphs"
create-glyph : glyph-proc
define l : 0.3 * Width define l : 0.3 * Width
define r : 2 * Width - l define r : 2 * Width - l
define l2 : l - Width define l2 : l - Width
define r2 : r - Width define r2 : r - Width
create-derived 'less.lig2' : glyph-proc create-glyph 'less.lig2' : glyph-proc
include : LessShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) l r include : LessShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) l r
create-derived 'greater.lig2' : glyph-proc create-glyph 'greater.lig2' : glyph-proc
include : GreaterShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) l r include : GreaterShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) l r
create-derived 'eq.at-lteq.lig2.flat' : glyph-proc create-glyph 'eq.at-lteq.lig2.flat' : glyph-proc
include : HBar l2 r2 (SymbolMid - dH - lessEqDist) OperatorStroke include : HBar l2 r2 (SymbolMid - dH - lessEqDist) OperatorStroke
create-aliased-glyph 'eq.at-gteq.lig2.flat' create-aliased-glyph 'eq.at-gteq.lig2.flat'
create-derived 'eq.at-lteq.lig2.slanted' : glyph-proc create-glyph 'eq.at-lteq.lig2.slanted' : glyph-proc
include : LessShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) l2 r2 OperatorStroke include : LessShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) l2 r2 OperatorStroke
create-derived 'eq.at-gteq.lig2.slanted' : glyph-proc create-glyph 'eq.at-gteq.lig2.slanted' : glyph-proc
include : GreaterShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) l2 r2 OperatorStroke include : GreaterShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) l2 r2 OperatorStroke
select-variant 'eq.at-lteq.lig2' select-variant 'eq.at-lteq.lig2'
@ -1061,26 +1055,25 @@ glyph-block Symbol-Math-Relation : begin
SymbolMid - dH + lessEqDist * 2 / 3 SymbolMid - dH + lessEqDist * 2 / 3
SymbolMid - dH - lessEqDist SymbolMid - dH - lessEqDist
create-glyph 'lessEqEq' 0x2266 : glyph-proc create-glyph 'lessEqEqUpper' : AsRadical : LessShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist * 1.75) SB RightSB lesslessSW
include : 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
include : HBar SB RightSB (SymbolMid - dH + lessEqDist * 2 / 3) lesslessSW create-glyph 'eqEqLower' : AsRadical : union
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) lesslessSW HBar SB RightSB (SymbolMid - dH + lessEqDist * 2 / 3) lesslessSW
create-derived 'lessEqEqBarNegated' 0x2268 : EqEqBarNegation HBar SB RightSB (SymbolMid - dH - lessEqDist) lesslessSW
create-glyph 'lessSymSym' 0x2A85 : glyph-proc create-glyph 'symSymLower' : AsRadical : union
include : LessShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist * 1.75) SB RightSB lesslessSW symWave (SymbolMid - dH + lessEqDist * 2 / 3) 1 lesslessSW
include : symWave (SymbolMid - dH + lessEqDist * 2 / 3) 1 lesslessSW symWave (SymbolMid - dH - lessEqDist) 1 lesslessSW
include : symWave (SymbolMid - dH - lessEqDist) 1 lesslessSW create-glyph 'eqEqBarNegatedLower' : AsRadical : union [refer-glyph 'eqEqLower'] [EqEqBarNegation]
create-derived 'lessSymSymBarNegated' 0x2A89 : EqEqBarNegation create-glyph 'symSymBarNegatedLower' : AsRadical : union [refer-glyph 'symSymLower'] [EqEqBarNegation]
create-glyph 'greaterEqEq' 0x2267 : glyph-proc
include : GreaterShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist * 1.75) SB RightSB lesslessSW create-glyph 'lessEqEq' 0x2266 : composite-proc [refer-glyph 'lessEqEqUpper'] [refer-glyph 'eqEqLower']
include : HBar SB RightSB (SymbolMid - dH + lessEqDist * 2 / 3) lesslessSW create-glyph 'lessEqEqBarNegated' 0x2268 : composite-proc [refer-glyph 'lessEqEqUpper'] [refer-glyph 'eqEqBarNegatedLower']
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) lesslessSW create-glyph 'lessSymSym' 0x2A85 : composite-proc [refer-glyph 'lessEqEqUpper'] [refer-glyph 'symSymLower']
create-derived 'greaterEqEqBarNegated' 0x2269 : EqEqBarNegation create-glyph 'lessSymSymBarNegated' 0x2A89 : composite-proc [refer-glyph 'lessEqEqUpper'] [refer-glyph 'symSymBarNegatedLower']
create-glyph 'greaterSymSym' 0x2A86 : glyph-proc create-glyph 'greaterEqEq' 0x2267 : composite-proc [refer-glyph 'greaterEqEqUpper'] [refer-glyph 'eqEqLower']
include : GreaterShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist * 1.75) SB RightSB lesslessSW create-glyph 'greaterEqEqBarNegated' 0x2269 : composite-proc [refer-glyph 'greaterEqEqUpper'] [refer-glyph 'eqEqBarNegatedLower']
include : symWave (SymbolMid - dH + lessEqDist * 2 / 3) 1 lesslessSW create-glyph 'greaterSymSym' 0x2A86 : composite-proc [refer-glyph 'greaterEqEqUpper'] [refer-glyph 'symSymLower']
include : symWave (SymbolMid - dH - lessEqDist) 1 lesslessSW create-glyph 'greaterSymSymBarNegated' 0x2A8A : composite-proc [refer-glyph 'greaterEqEqUpper'] [refer-glyph 'symSymBarNegatedLower']
create-derived 'greaterSymSymBarNegated' 0x2A8A : EqEqBarNegation
create-glyph 'lessGreater' 0x2276 : glyph-proc create-glyph 'lessGreater' 0x2276 : glyph-proc
include : LessShape (SymbolMid + llggHeight / 2) (SymbolMid - llggHeight / 6 + lessEqDist) SB RightSB lesslessSW include : LessShape (SymbolMid + llggHeight / 2) (SymbolMid - llggHeight / 6 + lessEqDist) SB RightSB lesslessSW
@ -1136,64 +1129,39 @@ glyph-block Symbol-Math-Relation : begin
include : SucceedsShapeA top bot l r [fallback s OperatorStroke] CThin include : SucceedsShapeA top bot l r [fallback s OperatorStroke] CThin
include : SucceedsShapeB top bot l r [fallback s OperatorStroke] CThin include : SucceedsShapeB top bot l r [fallback s OperatorStroke] CThin
create-glyph 'precedes' 0x227a : glyph-proc create-glyph 'precedes' 0x227a : AsRadical : PrecedesShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB
include : PrecedesShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB create-glyph 'succeeds' 0x227b : AsRadical : SucceedsShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB
create-glyph 'precedesEqUpper' : AsRadical : PrecedesShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB
create-glyph 'precedesEqEqUpper' : AsRadical : PrecedesShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist * 1.75) SB RightSB lesslessSW
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 'succeeds' 0x227b : glyph-proc create-glyph 'precedes.narrow' : composite-proc [refer-glyph 'precedesEqUpper'] [Upright] [Translate 0 (-lessEqDist)] [Italify]
include : SucceedsShape (SymbolMid + dH) (SymbolMid - dH) SB RightSB 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']
PrecedesShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) SB RightSB OperatorStroke 1
create-glyph : glyph-proc create-glyph 'precedesEqEq' 0x2AB3 : composite-proc [refer-glyph 'precedesEqEqUpper'] [refer-glyph 'eqEqLower']
include : PrecedesShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB create-glyph 'precedesEqEqBarNegated' 0x2AB5 : composite-proc [refer-glyph 'precedesEqEqUpper'] [refer-glyph 'eqEqBarNegatedLower']
create-derived 'precedes.narrow' : glyph-proc create-glyph 'precedesSymSym' 0x2AB7 : composite-proc [refer-glyph 'precedesEqEqUpper'] [refer-glyph 'symSymLower']
include : Upright create-glyph 'precedesSymSymBarNegated' 0x2AB9 : composite-proc [refer-glyph 'precedesEqEqUpper'] [refer-glyph 'symSymBarNegatedLower']
include : Translate 0 (-lessEqDist)
include : Italify
create-derived 'precedesEq' 0x2AAF : glyph-proc
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke
create-derived 'precedesEqBarNegated' 0x2AB1 : BarNegator (SymbolMid - dH) lessEqDist
create-derived 'precedesSym' 0x227E : glyph-proc
include : symWave (SymbolMid - dH - lessEqDist) 1
create-derived 'precedesSymBarNegated' 0x22E8 : BarNegator (SymbolMid - dH) lessEqDist
create-derived 'precedesEqSlant' 0x227C : glyph-proc
include : PrecedesShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) SB RightSB OperatorStroke 1
create-glyph 'precedesEqEq' 0x2AB3 : glyph-proc
include : PrecedesShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist * 1.75) SB RightSB lesslessSW
include : HBar SB RightSB (SymbolMid - dH + lessEqDist * 2 / 3) lesslessSW
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) lesslessSW
create-derived 'precedesEqEqBarNegated' 0x2AB5 : EqEqBarNegation
create-glyph 'precedesSymSym' 0x2AB7 : glyph-proc
include : PrecedesShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist * 1.75) SB RightSB lesslessSW
include : symWave (SymbolMid - dH + lessEqDist * 2 / 3) 1 lesslessSW
include : symWave (SymbolMid - dH - lessEqDist) 1 lesslessSW
create-derived 'precedesSymSymBarNegated' 0x2AB9 : EqEqBarNegation
create-glyph : glyph-proc create-glyph 'succeeds.narrow' : composite-proc [refer-glyph 'succeedsEqUpper'] [Upright] [Translate 0 (-lessEqDist)] [Italify]
include : SucceedsShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) SB RightSB create-glyph 'succeedsEq' 0x2AB0 : composite-proc [refer-glyph 'succeedsEqUpper'] [refer-glyph 'eqLower']
create-derived 'succeeds.narrow' : glyph-proc create-glyph 'sycceedseqBarNegated' 0x2AB2 : composite-proc [refer-glyph 'succeedsEqUpper'] [refer-glyph 'eqBarNegatedLower']
include : Upright create-glyph 'succeedsSym' 0x227F : composite-proc [refer-glyph 'succeedsEqUpper'] [refer-glyph 'symLower']
include : Translate 0 (-lessEqDist) create-glyph 'succeedsSymBarNegated' 0x22E9 : composite-proc [refer-glyph 'succeedsEqUpper'] [refer-glyph 'symBarNegatedLower']
include : Italify create-glyph 'succeedsEqSlant' 0x227D : composite-proc [refer-glyph 'succeedsEqUpper']
create-derived 'succeedsEq' 0x2AB0 : glyph-proc SucceedsShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) SB RightSB OperatorStroke 1
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke
create-derived 'sycceedseqBarNegated' 0x2AB2 : BarNegator (SymbolMid - dH) lessEqDist
create-derived 'succeedsSym' 0x227F : glyph-proc
include : symWave (SymbolMid - dH - lessEqDist) 1
create-derived 'succeedsSymBarNegated' 0x22E9 : BarNegator (SymbolMid - dH) lessEqDist
create-derived 'succeedsEqSlant' 0x227D : glyph-proc
include : SucceedsShapeB (SymbolMid + dH - lessEqDist) (SymbolMid - dH - lessEqDist) SB RightSB OperatorStroke 1
create-glyph 'succeedsEqEq' 0x2AB4 : glyph-proc create-glyph 'succeedsEqEq' 0x2AB4 : composite-proc [refer-glyph 'succeedsEqEqUpper'] [refer-glyph 'eqEqLower']
include : SucceedsShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist * 1.75) SB RightSB lesslessSW create-glyph 'succeedsEqEqBarNegated' 0x2AB6 : composite-proc [refer-glyph 'succeedsEqEqUpper'] [refer-glyph 'eqEqBarNegatedLower']
include : HBar SB RightSB (SymbolMid - dH + lessEqDist * 2 / 3) lesslessSW create-glyph 'succeedsSymSym' 0x2AB8 : composite-proc [refer-glyph 'succeedsEqEqUpper'] [refer-glyph 'symSymLower']
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) lesslessSW create-glyph 'succeedsSymSymBarNegated' 0x2ABA : composite-proc [refer-glyph 'succeedsEqEqUpper'] [refer-glyph 'symSymBarNegatedLower']
create-derived 'succeedsEqEqBarNegated' 0x2AB6 : EqEqBarNegation
create-glyph 'succeedsSymSym' 0x2AB8 : glyph-proc
include : SucceedsShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist * 1.75) SB RightSB lesslessSW
include : symWave (SymbolMid - dH + lessEqDist * 2 / 3) 1 lesslessSW
include : symWave (SymbolMid - dH - lessEqDist) 1 lesslessSW
create-derived 'succeedsSymSymBarNegated' 0x2ABA : EqEqBarNegation
create-glyph 'sym' 0x223C : symWave SymbolMid 1 create-glyph 'sym' 0x223C : symWave SymbolMid 1
@ -1284,15 +1252,13 @@ glyph-block Symbol-Math-Relation : begin
turned 'supst' 0x2283 'subst' Middle SymbolMid turned 'supst' 0x2283 'subst' Middle SymbolMid
turned 'doubleSupst' 0x22D1 'doubleSubst' Middle SymbolMid turned 'doubleSupst' 0x22D1 'doubleSubst' Middle SymbolMid
create-glyph : glyph-proc create-glyph 'substBarUpper' : AsRadical : SubsetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist)
include : SubsetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) create-glyph 'supstBarUpper' : AsRadical : SupsetShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist)
create-derived 'substBar' 0x2286 : glyph-proc
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke create-glyph 'substBar' 0x2286 : composite-proc [refer-glyph 'substBarUpper'] [refer-glyph 'eqLower']
create-derived 'substBarNegated' 0x228A : BarNegator (SymbolMid - dH) lessEqDist create-glyph 'substBarNegated' 0x228A : composite-proc [refer-glyph 'substBarUpper'] [refer-glyph 'eqBarNegatedLower']
create-derived 'supstBar' 0x2287 : glyph-proc create-glyph 'supstBar' 0x2287 : composite-proc [refer-glyph 'supstBarUpper'] [refer-glyph 'eqLower']
include : FlipAround Middle (SymbolMid + lessEqDist) create-glyph 'supstBarNegated' 0x228B : composite-proc [refer-glyph 'supstBarUpper'] [refer-glyph 'eqBarNegatedLower']
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke
create-derived 'supstBarNegated' 0x228B : BarNegator (SymbolMid - dH) lessEqDist
create-glyph 'element' 0x2208 : glyph-proc create-glyph 'element' 0x2208 : glyph-proc
include : SubsetShape (SymbolMid + dH * 4 / 3) (SymbolMid - dH * 4 / 3) include : SubsetShape (SymbolMid + dH * 4 / 3) (SymbolMid - dH * 4 / 3)
@ -1306,20 +1272,20 @@ glyph-block Symbol-Math-Relation : begin
turned nothing 0x220D 'smallElement' Middle SymbolMid turned nothing 0x220D 'smallElement' Middle SymbolMid
create-glyph 'prefix' 0x228F : glyph-proc create-glyph 'prefix' 0x228F : PrefixShape (SymbolMid + dH) (SymbolMid - dH)
include : PrefixShape (SymbolMid + dH) (SymbolMid - dH) create-glyph 'suffix' 0x2290 : SuffixShape (SymbolMid + dH) (SymbolMid - dH)
create-glyph 'suffix' 0x2290 : glyph-proc
include : SuffixShape (SymbolMid + dH) (SymbolMid - dH)
create-glyph : glyph-proc create-glyph 'prefixBarUpper' : AsRadical : PrefixShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist)
include : PrefixShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist) create-glyph 'suffixBarUpper' : AsRadical : SuffixShape (SymbolMid + dH + lessEqDist) (SymbolMid - dH + lessEqDist)
create-derived 'prefixBar' 0x2291 : glyph-proc
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke create-glyph 'prefixBar' 0x2291 : composite-proc [refer-glyph 'prefixBarUpper'] [refer-glyph 'eqLower']
create-derived 'prefixBarNegated' 0x22E4 : BarNegator (SymbolMid - dH) lessEqDist create-glyph 'prefixBarNegated' 0x22E4 : composite-proc [refer-glyph 'prefixBarUpper'] [refer-glyph 'eqBarNegatedLower']
create-derived 'suffixBar' 0x2292 : glyph-proc create-glyph 'suffixBar' 0x2292 : composite-proc [refer-glyph 'suffixBarUpper'] [refer-glyph 'eqLower']
include : FlipAround Middle (SymbolMid + lessEqDist) create-glyph 'suffixBarNegated' 0x22E5 : composite-proc [refer-glyph 'suffixBarUpper'] [refer-glyph 'eqBarNegatedLower']
include : HBar SB RightSB (SymbolMid - dH - lessEqDist) OperatorStroke
create-derived 'suffixBarNegated' 0x22E5 : BarNegator (SymbolMid - dH) lessEqDist create-glyph 'prefixElement' 0x22FF : glyph-proc
include : PrefixShape (SymbolMid + dH * 4 / 3) (SymbolMid - dH * 4 / 3)
include : HBar (SB + HalfStroke) RightSB SymbolMid
create-glyph 0x22F8 : composite-proc create-glyph 0x22F8 : composite-proc
refer-glyph 'element' refer-glyph 'element'

View file

@ -143,7 +143,7 @@ define-macro glyph-block-import : syntax-rules
HooktopLeftBar FlatSlashShape hookstart hookend CyrDescender FlipAround ScaleAround HooktopLeftBar FlatSlashShape hookstart hookend CyrDescender FlipAround ScaleAround
Realign ForceUpright diagCor CreateWaveShape NameUni PointingTo WithAIHSerifsMask Realign ForceUpright diagCor CreateWaveShape NameUni PointingTo WithAIHSerifsMask
WithTransform ReverseContours clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape WithTransform ReverseContours clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape
OBarRightToothlessShape OBarRightRoundedShape] OBarRightToothlessShape OBarRightRoundedShape AsRadical]
Overmarks `[markExtend markHalfStroke markStress markFine markMiddle markDotsRadius Overmarks `[markExtend markHalfStroke markStress markFine markMiddle markDotsRadius
aboveMarkTop aboveMarkBot aboveMarkMid belowMarkBot belowMarkTop commaOvershoot aboveMarkTop aboveMarkBot aboveMarkMid belowMarkBot belowMarkTop commaOvershoot

View file

@ -69,8 +69,8 @@ const TieGlyph = {
const DoNotDeriveVariants = { const DoNotDeriveVariants = {
get(glyph) { get(glyph) {
if (glyph && glyph.related) return glyph.related.DoNotDeriveVariants; if (glyph && glyph.related) return !!glyph.related.DoNotDeriveVariants;
else return null; else return false;
}, },
set(glyph) { set(glyph) {
if (!glyph.related) glyph.related = {}; if (!glyph.related) glyph.related = {};
@ -78,6 +78,17 @@ const DoNotDeriveVariants = {
} }
}; };
const Radical = {
get(glyph) {
if (glyph && glyph.related) return !!glyph.related.radical;
else return false;
},
set(glyph) {
if (!glyph.related) glyph.related = {};
glyph.related.radical = true;
}
};
const CvTagCache = new Map(); const CvTagCache = new Map();
function Cv(tag) { function Cv(tag) {
if (CvTagCache.has(tag)) return CvTagCache.get(tag); if (CvTagCache.has(tag)) return CvTagCache.get(tag);
@ -295,6 +306,7 @@ exports.getGrMesh = getGrMesh;
exports.TieMark = TieMark; exports.TieMark = TieMark;
exports.TieGlyph = TieGlyph; exports.TieGlyph = TieGlyph;
exports.DoNotDeriveVariants = DoNotDeriveVariants; exports.DoNotDeriveVariants = DoNotDeriveVariants;
exports.Radical = Radical;
exports.AnyDerivingCv = AnyDerivingCv; exports.AnyDerivingCv = AnyDerivingCv;
exports.CcmpDecompose = CcmpDecompose; exports.CcmpDecompose = CcmpDecompose;
exports.CvDecompose = CvDecompose; exports.CvDecompose = CvDecompose;