Fix cv99 application on ASCII single quotes and graves (#1404).

This commit is contained in:
be5invis 2022-08-23 00:05:43 -07:00
parent 85966f835c
commit f623632f81
27 changed files with 125 additions and 145 deletions

1
changes/16.0.1.md Normal file
View file

@ -0,0 +1 @@
* Fix `cv99` application on ASCII single quotes and graves (#1404).

View file

@ -1,14 +1,14 @@
$$include '../../../meta/macros.ptl' $$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from"../../../support/utils.mjs" import [mix linreg clamp fallback] from"../../../support/utils.mjs"
import [RightDependentLink RightDependentTrigger CvDecompose] from"../../../support/gr.mjs" import [DependentSelector CvDecompose] from"../../../support/gr.mjs"
glyph-module glyph-module
glyph-block Letter-Cyrillic-Nje : begin glyph-block Letter-Cyrillic-Nje : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared : CreateRightDependentComposite glyph-block-import Letter-Shared : CreateDependentComposite
glyph-block-import Letter-Shared-Shapes : SerifFrame glyph-block-import Letter-Shared-Shapes : SerifFrame
glyph-block-import Letter-Cyrillic-Yeri : CyrlYeriUprightShape CyrlYeriRoundShape CyrlYeriCursiveShape glyph-block-import Letter-Cyrillic-Yeri : CyrlYeriUprightShape CyrlYeriRoundShape CyrlYeriCursiveShape
@ -49,26 +49,15 @@ glyph-block Letter-Cyrillic-Nje : begin
serifedExceptBottomRight { SLAB-TAILED-CYRILLIC } serifedExceptBottomRight { SLAB-TAILED-CYRILLIC }
foreach { suffix { slabType } } [Object.entries LeftHalfConfig] : do foreach { suffix { slabType } } [Object.entries LeftHalfConfig] : do
local kReducedLink NjeReduction.(suffix)
create-glyph "cyrl/Nje/leftHalf.\(suffix)" : glyph-proc create-glyph "cyrl/Nje/leftHalf.\(suffix)" : glyph-proc
local df : DivFrame para.diversityM 3 local df : DivFrame para.diversityM 3
set-width df.width
set-base-anchor 'cvDecompose' 0 0
include : df.markSet.capital include : df.markSet.capital
include : LeftHalf slabType df CAP include : LeftHalf slabType df CAP
set-base-anchor 'cvDecompose' 0 0
if kReducedLink : begin
RightDependentLink.set currentGlyph 'reduced' "cyrl/Nje/leftHalf.\(kReducedLink)"
create-glyph "cyrl/nje/leftHalf.\(suffix)" : glyph-proc create-glyph "cyrl/nje/leftHalf.\(suffix)" : glyph-proc
local df : DivFrame para.diversityM 3 local df : DivFrame para.diversityM 3
set-width df.width
set-base-anchor 'cvDecompose' 0 0
include : df.markSet.e include : df.markSet.e
include : LeftHalf slabType df XH include : LeftHalf slabType df XH
set-base-anchor 'cvDecompose' 0 0
if kReducedLink : begin
RightDependentLink.set currentGlyph 'reduced' "cyrl/nje/leftHalf.\(kReducedLink)"
define YerConfig : object define YerConfig : object
corner { CyrlYeriUprightShape } corner { CyrlYeriUprightShape }
@ -78,31 +67,35 @@ glyph-block Letter-Cyrillic-Nje : begin
foreach { suffix { Yeri } } [Object.entries YerConfig] : do foreach { suffix { Yeri } } [Object.entries YerConfig] : do
create-glyph "cyrl/Nje/rightHalf.\(suffix)" : glyph-proc create-glyph "cyrl/Nje/rightHalf.\(suffix)" : glyph-proc
local df : DivFrame para.diversityM 3 local df : DivFrame para.diversityM 3
set-width 0
set-mark-anchor 'cvDecompose' 0 0
include : df.markSet.capital include : df.markSet.capital
include : RightHalf Yeri df CAP include : RightHalf Yeri df CAP
set-mark-anchor 'cvDecompose' 0 0 DependentSelector.set currentGlyph : if (Yeri === CyrlYeriUprightShape) 'full' 'reduced'
if (Yeri !== CyrlYeriUprightShape) : RightDependentTrigger.set currentGlyph 'reduced'
create-glyph "cyrl/nje/rightHalf.\(suffix)" : glyph-proc create-glyph "cyrl/nje/rightHalf.\(suffix)" : glyph-proc
local df : DivFrame para.diversityM 3 local df : DivFrame para.diversityM 3
set-width 0
set-mark-anchor 'cvDecompose' 0 0
include : df.markSet.e include : df.markSet.e
include : RightHalf Yeri df XH include : RightHalf Yeri df XH
set-mark-anchor 'cvDecompose' 0 0 DependentSelector.set currentGlyph : if (Yeri === CyrlYeriUprightShape) 'full' 'reduced'
if (Yeri !== CyrlYeriUprightShape) : RightDependentTrigger.set currentGlyph 'reduced'
select-variant 'cyrl/Nje/leftHalf/full'
follow -- 'cyrl/Nje/leftHalf'
shapeFrom -- 'cyrl/Nje/leftHalf'
select-variant 'cyrl/nje/leftHalf/full'
follow -- 'cyrl/nje/leftHalf'
shapeFrom -- 'cyrl/nje/leftHalf'
select-variant 'cyrl/Nje/leftHalf/reduced'
follow -- 'cyrl/Nje/leftHalf/reduced'
shapeFrom -- 'cyrl/Nje/leftHalf'
select-variant 'cyrl/nje/leftHalf/reduced'
follow -- 'cyrl/nje/leftHalf/reduced'
shapeFrom -- 'cyrl/nje/leftHalf'
select-variant 'cyrl/Nje/rightHalf' select-variant 'cyrl/Nje/rightHalf'
select-variant 'cyrl/nje/rightHalf' select-variant 'cyrl/nje/rightHalf'
select-variant 'cyrl/Nje/leftHalf/full' (follow -- 'cyrl/Nje/leftHalf') (shapeFrom -- 'cyrl/Nje/leftHalf')
select-variant 'cyrl/nje/leftHalf/full' (follow -- 'cyrl/nje/leftHalf') (shapeFrom -- 'cyrl/nje/leftHalf')
select-variant 'cyrl/Nje/leftHalf/reduced' (follow -- 'cyrl/Nje/leftHalf') (shapeFrom -- 'cyrl/Nje/leftHalf') (reduction -- NjeReduction)
select-variant 'cyrl/nje/leftHalf/reduced' (follow -- 'cyrl/nje/leftHalf') (shapeFrom -- 'cyrl/nje/leftHalf') (reduction -- NjeReduction)
if [query-glyph 'cyrl/Nje/leftHalf/full'] : RightDependentLink.set [query-glyph 'cyrl/Nje/leftHalf/full'] 'reduced' 'cyrl/Nje/leftHalf/reduced' CreateDependentComposite 'cyrl/Nje' 0x40A 'cyrl/Nje/rightHalf' : object
if [query-glyph 'cyrl/nje/leftHalf/full'] : RightDependentLink.set [query-glyph 'cyrl/nje/leftHalf/full'] 'reduced' 'cyrl/nje/leftHalf/reduced' full 'cyrl/Nje/leftHalf/full'
reduced 'cyrl/Nje/leftHalf/reduced'
CreateRightDependentComposite 'cyrl/Nje' 0x40A 'cyrl/Nje/leftHalf/full' 'cyrl/Nje/rightHalf' CreateDependentComposite 'cyrl/nje' 0x45A 'cyrl/nje/rightHalf' : object
CreateRightDependentComposite 'cyrl/nje' 0x45A 'cyrl/nje/leftHalf/full' 'cyrl/nje/rightHalf' full 'cyrl/nje/leftHalf/full'
reduced 'cyrl/nje/leftHalf/reduced'

View file

@ -1,7 +1,7 @@
$$include '../../../meta/macros.ptl' $$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from"../../../support/utils.mjs" import [mix linreg clamp fallback] from"../../../support/utils.mjs"
import [RightDependentLink RightDependentTrigger CvDecompose MathSansSerif] from"../../../support/gr.mjs" import [DependentSelector CvDecompose MathSansSerif] from"../../../support/gr.mjs"
glyph-module glyph-module
@ -9,7 +9,7 @@ glyph-block Letter-Latin-S : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Blackboard : BBS BBD glyph-block-import Letter-Blackboard : BBS BBD
glyph-block-import Letter-Shared : CreateAccentedComposition CreateRightDependentComposite glyph-block-import Letter-Shared : CreateAccentedComposition CreateDependentComposite
glyph-block-import Letter-Shared-Shapes : DToothlessRise FlatHookDepth ArcStartSerifWidth glyph-block-import Letter-Shared-Shapes : DToothlessRise FlatHookDepth ArcStartSerifWidth
glyph-block-import Letter-Shared-Shapes : SerifedArcStart_RtlLhs SerifedArcEnd_RtlRhs glyph-block-import Letter-Shared-Shapes : SerifedArcStart_RtlLhs SerifedArcEnd_RtlRhs
glyph-block-import Letter-Shared-Shapes : SerifedArcStart_LtrRhs SerifedArcEnd_LtrLhs glyph-block-import Letter-Shared-Shapes : SerifedArcStart_LtrRhs SerifedArcEnd_LtrLhs
@ -240,7 +240,6 @@ glyph-block Letter-Latin-S : begin
include : SStrokeImpl top bot doTS doBS [AdviceStroke2 2 3 (top - bot)] EssUpper include : SStrokeImpl top bot doTS doBS [AdviceStroke2 2 3 (top - bot)] EssUpper
include : SAutoSlabStart doTS top Stroke Hook include : SAutoSlabStart doTS top Stroke Hook
include : SAutoSlabEnd doBS bot Stroke Hook include : SAutoSlabEnd doBS bot Stroke Hook
RightDependentLink.set currentGlyph "cap" "DollarKernelCap.\(suffix)"
create-glyph "DollarKernelCap.\(suffix)" : glyph-proc create-glyph "DollarKernelCap.\(suffix)" : glyph-proc
define top : CAP * 0.88 define top : CAP * 0.88
@ -355,8 +354,6 @@ glyph-block Letter-Latin-S : begin
select-variant 'DollarKernelStd' (follow -- 'S') select-variant 'DollarKernelStd' (follow -- 'S')
select-variant 'DollarKernelCap' (follow -- 'S') select-variant 'DollarKernelCap' (follow -- 'S')
if [query-glyph 'DollarKernelStd'] : begin
RightDependentLink.set [query-glyph 'DollarKernelStd'] "cap" 'DollarKernelCap'
select-variant 'SSwash' 0x2C7E select-variant 'SSwash' 0x2C7E
select-variant 'sSwash' 0x23F select-variant 'sSwash' 0x23F
@ -429,17 +426,15 @@ glyph-block Letter-Latin-S : begin
FlatSlashShape Middle (XH / 2) (OverlayStroke / 2) (-0.2) 0.75 FlatSlashShape Middle (XH / 2) (OverlayStroke / 2) (-0.2) 0.75
define DollarConfig : object define DollarConfig : object
open { 0.95 0.05 (Descender / 2) 0 0 } open { 0.95 0.05 (Descender / 2) 0 "std" }
through { 0.95 0.05 (Descender / 2) 1 0 } through { 0.95 0.05 (Descender / 2) 1 "std" }
interrupted { 0.95 0.05 (Descender / 2) 2 0 } interrupted { 0.95 0.05 (Descender / 2) 2 "std" }
openCap { 0.88 0.12 0 0 1 } openCap { 0.88 0.12 0 0 "cap" }
throughCap { 0.88 0.12 0 1 1 } throughCap { 0.88 0.12 0 1 "cap" }
interruptedCap { 0.88 0.12 0 2 1 } interruptedCap { 0.88 0.12 0 2 "cap" }
foreach { suffix { kTop kBot overflow fillType fShort } } [Object.entries DollarConfig] : do foreach { suffix { kTop kBot overflow fillType selector } } [Object.entries DollarConfig] : do
create-glyph "dollar/bar.\(suffix)" : glyph-proc create-glyph "dollar/bar.\(suffix)" : glyph-proc
set-width 0
set-mark-anchor 'cvDecompose' 0 0
define top : CAP * kTop define top : CAP * kTop
define bot : CAP * kBot define bot : CAP * kBot
define w : AdviceStroke 3 define w : AdviceStroke 3
@ -471,8 +466,10 @@ glyph-block Letter-Latin-S : begin
dispiro [corner 0 yTermLeft : widths.center gap] [corner Width yTermRight] dispiro [corner 0 yTermLeft : widths.center gap] [corner Width yTermRight]
if fShort : RightDependentTrigger.set currentGlyph 'cap' DependentSelector.set currentGlyph selector
select-variant 'dollar/bar' (follow -- 'dollar') select-variant 'dollar/bar' (follow -- 'dollar')
CreateRightDependentComposite 'dollar' '$' 'DollarKernelStd' 'dollar/bar' CreateDependentComposite 'dollar' '$' "dollar/bar" : object
'std' 'DollarKernelStd'
'cap' 'DollarKernelCap'

View file

@ -1,7 +1,7 @@
$$include '../../meta/macros.ptl' $$include '../../meta/macros.ptl'
import [mix clamp fallback] from"../../support/utils.mjs" import [mix clamp fallback] from"../../support/utils.mjs"
import [Dotless CvDecompose RightDependentTrigger RightDependentLink] from"../../support/gr.mjs" import [Dotless CvDecompose RightDependentTrigger RightDependentLink DependentSelector] from"../../support/gr.mjs"
import [DesignParameters] from"../../meta/aesthetics.mjs" import [DesignParameters] from"../../meta/aesthetics.mjs"
glyph-module glyph-module
@ -35,13 +35,20 @@ glyph-block Letter-Shared : begin
foreach accentGid [items-of accentGids] : include [refer-glyph accentGid] foreach accentGid [items-of accentGids] : include [refer-glyph accentGid]
if (!fDontDecompose && !gr) : CvDecompose.set currentGlyph { src :: accentGids } if (!fDontDecompose && !gr) : CvDecompose.set currentGlyph { src :: accentGids }
glyph-block-export CreateRightDependentComposite glyph-block-export CreateDependentComposite
define [CreateRightDependentComposite gidDst unicode gidPart1 gidPart2] : begin define [CreateDependentComposite gidDst unicode gidPart1 gidPart2Map] : begin
derive-multi-part-glyphs gidDst unicode { gidPart1 gidPart2 } : function [src] : glyph-proc local sourceGidList { gidPart1 }
local { a b } src local keyToIndexMap {.}
local trigger : RightDependentTrigger.get : query-glyph b foreach { key g } [pairs-of gidPart2Map] : begin
local kernel : [RightDependentLink.get [query-glyph a] trigger] || a set keyToIndexMap.(key) sourceGidList.length
include [refer-glyph kernel] AS_BASE ALSO_METRICS sourceGidList.push g
derive-multi-part-glyphs gidDst unicode sourceGidList : function [src] : glyph-proc
local a src.0
local selector : DependentSelector.get : query-glyph a
local b src.(keyToIndexMap.(selector))
include [refer-glyph a] AS_BASE ALSO_METRICS
include [refer-glyph b] include [refer-glyph b]
glyph-block-export SetGrekUpperTonos glyph-block-export SetGrekUpperTonos

View file

@ -89,7 +89,7 @@ glyph-block Mark-Above : begin
flat (markMiddle + markStress) aboveMarkBot [widths markFine markFine] flat (markMiddle + markStress) aboveMarkBot [widths markFine markFine]
curl (markMiddle - markExtend) aboveMarkTop [widths markStress markStress] curl (markMiddle - markExtend) aboveMarkTop [widths markStress markStress]
create-glyph 'asciiGrave.straight' : glyph-proc create-glyph 'asciiGrave/body/straight' : glyph-proc
local df : DivFrame para.diversityF local df : DivFrame para.diversityF
set-width df.width set-width df.width
include : dispiro include : dispiro

View file

@ -152,7 +152,7 @@ glyph-block Symbol-Math-APL : begin
create-glyph 0x2353 : aplBoxed : refer-glyph 'wedge' create-glyph 0x2353 : aplBoxed : refer-glyph 'wedge'
create-glyph 0x2354 : aplBoxed : refer-glyph 'nabla.aplForm' create-glyph 0x2354 : aplBoxed : refer-glyph 'nabla.aplForm'
create-glyph 0x2357 : aplBoxed : refer-glyph 'arrowDown.NWID' create-glyph 0x2357 : aplBoxed : refer-glyph 'arrowDown.NWID'
create-glyph 0x235E : aplBoxed : refer-glyph 'asciiSingleQuote.straight' create-glyph 0x235E : aplBoxed : refer-glyph 'asciiSingleQuote/body/straight'
create-glyph 0x236F : aplBoxed : refer-glyph 'notequal' create-glyph 0x236F : aplBoxed : refer-glyph 'notequal'
define [DeriveBoxed src] : aplBoxed : refer-glyph src define [DeriveBoxed src] : aplBoxed : refer-glyph src
@ -184,19 +184,19 @@ glyph-block Symbol-Math-APL : begin
begin marks begin marks
refer-glyph srcs.1 refer-glyph srcs.1
clear-anchors clear-anchors
AplAccented 0x2362 'nabla.aplForm' 'dieresisAbove' [MarkSet.tack] AplAccented 0x2362 'nabla.aplForm' 'dieresisAbove' [MarkSet.tack]
AplAccented 0x2361 'top' 'dieresisAbove' [MarkSet.tack] AplAccented 0x2361 'top' 'dieresisAbove' [MarkSet.tack]
AplAccented 0x2363 'asterisk.pentaSMid' 'dieresisAbove' [MarkSet.plus] AplAccented 0x2363 'asterisk.pentaSMid' 'dieresisAbove' [MarkSet.plus]
AplAccented 0x2364 'whiteSmallCircle.NWID' 'dieresisAbove' [MarkSet.plus] AplAccented 0x2364 'whiteSmallCircle.NWID' 'dieresisAbove' [MarkSet.plus]
AplAccented 0x2365 'whiteCircle.NWID' 'dieresisAbove' [MarkSet.plus] AplAccented 0x2365 'whiteCircle.NWID' 'dieresisAbove' [MarkSet.plus]
AplAccented 0x2368 'asciiTilde.low' 'dieresisAbove' [MarkSet.plus] AplAccented 0x2368 'asciiTilde.low' 'dieresisAbove' [MarkSet.plus]
AplAccented 0x2369 'greater.narrow' 'dieresisAbove' [MarkSet.plus] AplAccented 0x2369 'greater.narrow' 'dieresisAbove' [MarkSet.plus]
AplAccented 0x234A 'bot' 'underlineBelow' [MarkSet.tack] AplAccented 0x234A 'bot' 'underlineBelow' [MarkSet.tack]
AplAccented 0x2358 'asciiSingleQuote.straight' 'underlineBelow' [MarkSet.plus] AplAccented 0x2358 'asciiSingleQuote/body/straight' 'underlineBelow' [MarkSet.plus]
AplAccented 0x235A 'whiteDiamond.NWID' 'underlineBelow' [MarkSet.plus] AplAccented 0x235A 'whiteDiamond.NWID' 'underlineBelow' [MarkSet.plus]
AplAccented 0x235B 'whiteSmallCircle.NWID' 'underlineBelow' [MarkSet.plus] AplAccented 0x235B 'whiteSmallCircle.NWID' 'underlineBelow' [MarkSet.plus]
AplAccented 0x235C 'whiteCircle.NWID' 'underlineBelow' [MarkSet.plus] AplAccented 0x235C 'whiteCircle.NWID' 'underlineBelow' [MarkSet.plus]
AplAccented 0x2377 'smallElement' 'underlineBelow' [MarkSet.plus] AplAccented 0x2377 'smallElement' 'underlineBelow' [MarkSet.plus]
derive-composites 'apl/alphaBar' 0x2376 'grek/alpha' [refer-glyph 'underlineBelow'] [clear-anchors] derive-composites 'apl/alphaBar' 0x2376 'grek/alpha' [refer-glyph 'underlineBelow'] [clear-anchors]
derive-composites 'apl/iotaBar' 0x2378 'grek/iota' [refer-glyph 'underlineBelow'] [clear-anchors] derive-composites 'apl/iotaBar' 0x2378 'grek/iota' [refer-glyph 'underlineBelow'] [clear-anchors]

View file

@ -2,6 +2,7 @@
$$include '../../../meta/macros.ptl' $$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from"../../../support/utils.mjs" import [mix linreg clamp fallback] from"../../../support/utils.mjs"
import [DependentSelector] from"../../../support/gr.mjs"
glyph-module glyph-module
@ -9,6 +10,7 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Symbol-Punctuation-Small glyph-block-import Symbol-Punctuation-Small
glyph-block-import Letter-Shared : CreateDependentComposite
local quoteTop (CAP * 1.05) local quoteTop (CAP * 1.05)
local quoteBottom (XH * 0.85) local quoteBottom (XH * 0.85)
@ -172,7 +174,7 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
ApparentTranslate 0 ([mix [mix [mix PeriodSize commaLow 0.5] yCurlyQuotes 0.5] quoteBottom (-1)] - quoteTop) ApparentTranslate 0 ([mix [mix [mix PeriodSize commaLow 0.5] yCurlyQuotes 0.5] quoteBottom (-1)] - quoteTop)
# ASCII quotes # ASCII quotes
create-glyph 'asciiSingleQuote.straight' : glyph-proc create-glyph 'asciiSingleQuote/body/straight' : glyph-proc
local df : DivFrame para.diversityF local df : DivFrame para.diversityF
set-width df.width set-width df.width
include : dispiro include : dispiro
@ -180,22 +182,36 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
g4.down.start df.middle quoteTop [heading Downward] g4.down.start df.middle quoteTop [heading Downward]
g4 df.middle quoteBottom [widths.heading (HalfStroke * 0.95) (HalfStroke * 0.95) Downward] g4 df.middle quoteBottom [widths.heading (HalfStroke * 0.95) (HalfStroke * 0.95) Downward]
alias 'asciiSingleQuote.raisedComma' null 'closeSingleQuote' create-glyph 'asciiGrave/selector.straight' : glyph-proc
alias 'asciiGrave.raisedInverseComma' null 'revSingleQuote' DependentSelector.set currentGlyph 'straight'
alias 'asciiGrave.raisedTurnComma' null 'openSingleQuote' create-glyph 'asciiGrave/selector.raisedInverseComma' : glyph-proc
DependentSelector.set currentGlyph 'raisedInverseComma'
create-glyph 'asciiGrave/selector.raisedTurnComma' : glyph-proc
DependentSelector.set currentGlyph 'raisedTurnComma'
select-variant 'asciiSingleQuote' 0x27 create-glyph 'asciiSingleQuote/selector.straight' : glyph-proc
select-variant 'asciiGrave' 0x60 DependentSelector.set currentGlyph 'straight'
create-glyph 'asciiSingleQuote/selector.raisedComma' : glyph-proc
DependentSelector.set currentGlyph 'raisedComma'
alias 'mdfStress' 0x2C8 'asciiSingleQuote.straight' select-variant 'asciiSingleQuote/selector' (follow -- 'asciiSingleQuote')
turned 'mdfSecondaryStress' 0x2CC 'asciiSingleQuote.straight' Middle (XH / 2) select-variant 'asciiGrave/selector' (follow -- 'asciiGrave')
CreateDependentComposite 'asciiGrave' 0x60 'asciiGrave/selector' : object
'straight' 'asciiGrave/body/straight'
'raisedInverseComma' 'revSingleQuote'
'raisedTurnComma' 'openSingleQuote'
CreateDependentComposite 'asciiSingleQuote' 0x27 'asciiSingleQuote/selector' : object
'straight' 'asciiSingleQuote/body/straight'
'raisedComma' 'closeSingleQuote'
create-glyph 'asciiDoubleQuote' 0x22 : glyph-proc create-glyph 'asciiDoubleQuote' 0x22 : glyph-proc
local dfSingle : DivFrame para.diversityF local dfSingle : DivFrame para.diversityF
local dist : 0.2 * Width local dist : 0.2 * Width
include : refer-glyph "asciiSingleQuote.straight" include : refer-glyph "asciiSingleQuote/body/straight"
include : Translate (-dist * 2) 0 include : Translate (-dist * 2) 0
include : refer-glyph "asciiSingleQuote.straight" include : refer-glyph "asciiSingleQuote/body/straight"
include : Translate (dist + Middle - dfSingle.middle) 0 include : Translate (dist + Middle - dfSingle.middle) 0
# Half-circle modifiers, use quote dimensions # Half-circle modifiers, use quote dimensions

View file

@ -16,10 +16,10 @@ export const Dotless = {
} }
}; };
export const LowerYDotAtBelow = SimpleProp("LowerYDotAtBelow"); export const LowerYDotAtBelow = LinkedGlyphProp("LowerYDotAtBelow");
export const RightDependentTrigger = SimpleProp("RightDependentTrigger"); export const DependentSelector = LinkedGlyphProp("DependentSelector");
export const MathSansSerif = SimpleProp("MathSansSerif"); export const MathSansSerif = LinkedGlyphProp("MathSansSerif");
function SimpleProp(key) { function LinkedGlyphProp(key) {
return { return {
get(glyph) { get(glyph) {
if (glyph && glyph.related) return glyph.related[key]; if (glyph && glyph.related) return glyph.related[key];
@ -33,29 +33,6 @@ function SimpleProp(key) {
}; };
} }
export const RightDependentLink = DependentLinkProp("RightDependentLink");
function DependentLinkProp(key) {
return {
get(glyph, subKey) {
if (glyph && glyph.related && glyph.related[key]) {
return glyph.related[key][subKey];
} else {
return null;
}
},
getAll(glyph) {
if (glyph && glyph.related) return glyph.related[key];
else return null;
},
set(glyph, subKey, toGid) {
if (typeof toGid !== "string") throw new Error("Must supply a GID instead of a glyph");
if (!glyph.related) glyph.related = {};
if (!glyph.related[key]) glyph.related[key] = {};
glyph.related[key][subKey] = toGid;
}
};
}
export const Nwid = OtlTaggedProp("Nwid", "NWID"); export const Nwid = OtlTaggedProp("Nwid", "NWID");
export const Wwid = OtlTaggedProp("Wwid", "WWID"); export const Wwid = OtlTaggedProp("Wwid", "WWID");
export const Lnum = OtlTaggedProp("Lnum", "lnum"); export const Lnum = OtlTaggedProp("Lnum", "lnum");
@ -64,7 +41,7 @@ export const AplForm = OtlTaggedProp("AplForm", "APLF");
export const NumeratorForm = OtlTaggedProp("Numerator", "numr"); export const NumeratorForm = OtlTaggedProp("Numerator", "numr");
export const DenominatorForm = OtlTaggedProp("Denominator", "dnom"); export const DenominatorForm = OtlTaggedProp("Denominator", "dnom");
function OtlTaggedProp(key, otlTag) { function OtlTaggedProp(key, otlTag) {
return { ...SimpleProp(key), otlTag }; return { ...LinkedGlyphProp(key), otlTag };
} }
export const CvDecompose = DecompositionProp("CvDecompose"); export const CvDecompose = DecompositionProp("CvDecompose");
@ -115,27 +92,21 @@ export const TieGlyph = {
} }
}; };
export const Radical = { function BoolProp(id) {
get(glyph) { return {
if (glyph && glyph.related) return !!glyph.related.radical; get(glyph) {
else return false; if (glyph && glyph.related) return !!glyph.related[id];
}, else return false;
set(glyph) { },
if (!glyph.related) glyph.related = {}; set(glyph) {
glyph.related.radical = true; if (!glyph.related) glyph.related = {};
} glyph.related[id] = true;
}; }
};
export const RequireCcmpDecompose = { }
get(glyph) { export const Radical = BoolProp("Radical");
if (glyph && glyph.related) return !!glyph.related.RequireCcmpDecompose; export const RequireCcmpDecompose = BoolProp("RequireCcmpDecompose");
else return false; export const NeqLigationSlashDotted = BoolProp("NeqLigationSlashDotted");
},
set(glyph) {
if (!glyph.related) glyph.related = {};
glyph.related.RequireCcmpDecompose = true;
}
};
export const Joining = { export const Joining = {
get(glyph) { get(glyph) {
@ -168,17 +139,6 @@ export const Joining = {
} }
}; };
export const NeqLigationSlashDotted = {
get(glyph) {
if (glyph && glyph.related) return !!glyph.related.neqLigationSlashDotted;
else return false;
},
set(glyph) {
if (!glyph.related) glyph.related = {};
glyph.related.neqLigationSlashDotted = true;
}
};
/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
const CvTagCache = new Map(); const CvTagCache = new Map();
@ -463,9 +423,4 @@ export function hashCv(g) {
/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
export const SvInheritableRelations = [ export const SvInheritableRelations = [DependentSelector, Joining, NeqLigationSlashDotted];
RightDependentLink,
RightDependentTrigger,
Joining,
NeqLigationSlashDotted
];

View file

@ -501,6 +501,7 @@ selector.halfH = "serifless"
selector."H/sansSerif" = "serifless" selector."H/sansSerif" = "serifless"
selector.Hwair = "serifless" selector.Hwair = "serifless"
selector."cyrl/Nje/leftHalf" = "serifless" selector."cyrl/Nje/leftHalf" = "serifless"
selector."cyrl/Nje/leftHalf/reduced" = "serifless"
[prime.capital-h.variants.top-left-serifed] [prime.capital-h.variants.top-left-serifed]
rank = 2 rank = 2
@ -510,6 +511,7 @@ selector.halfH = "topLeftSerifed"
selector."H/sansSerif" = "serifless" selector."H/sansSerif" = "serifless"
selector.Hwair = "topLeftSerifed" selector.Hwair = "topLeftSerifed"
selector."cyrl/Nje/leftHalf" = "topLeftSerifed" selector."cyrl/Nje/leftHalf" = "topLeftSerifed"
selector."cyrl/Nje/leftHalf/reduced" = "topLeftSerifed"
[prime.capital-h.variants.top-left-bottom-right-serifed] [prime.capital-h.variants.top-left-bottom-right-serifed]
rank = 3 rank = 3
@ -519,6 +521,7 @@ selector.halfH = "topLeftSerifed"
selector."H/sansSerif" = "serifless" selector."H/sansSerif" = "serifless"
selector.Hwair = "topLeftSerifed" selector.Hwair = "topLeftSerifed"
selector."cyrl/Nje/leftHalf" = "topLeftSerifed" selector."cyrl/Nje/leftHalf" = "topLeftSerifed"
selector."cyrl/Nje/leftHalf/reduced" = "topLeftSerifed"
[prime.capital-h.variants.serifed] [prime.capital-h.variants.serifed]
rank = 4 rank = 4
@ -528,6 +531,7 @@ selector.halfH = "serifed"
selector."H/sansSerif" = "serifless" selector."H/sansSerif" = "serifless"
selector.Hwair = "serifedExceptBottomRight" selector.Hwair = "serifedExceptBottomRight"
selector."cyrl/Nje/leftHalf" = "serifed" selector."cyrl/Nje/leftHalf" = "serifed"
selector."cyrl/Nje/leftHalf/reduced" = "serifedExceptBottomRight"
@ -5364,6 +5368,7 @@ selector."cyrl/en" = "serifless"
selector."cyrl/en.BGR" = "serifless" selector."cyrl/en.BGR" = "serifless"
selector."cyrl/en/descenderBase" = "serifless" selector."cyrl/en/descenderBase" = "serifless"
selector."cyrl/nje/leftHalf" = "serifless" selector."cyrl/nje/leftHalf" = "serifless"
selector."cyrl/nje/leftHalf/reduced" = "serifless"
[prime.cyrl-en.variants.tailed-serifless] [prime.cyrl-en.variants.tailed-serifless]
rank = 2 rank = 2
@ -5372,6 +5377,7 @@ selector."cyrl/en" = "tailed"
selector."cyrl/en.BGR" = "tailed" selector."cyrl/en.BGR" = "tailed"
selector."cyrl/en/descenderBase" = "serifless" selector."cyrl/en/descenderBase" = "serifless"
selector."cyrl/nje/leftHalf" = "serifless" selector."cyrl/nje/leftHalf" = "serifless"
selector."cyrl/nje/leftHalf/reduced" = "serifless"
[prime.cyrl-en.variants.top-left-serifed] [prime.cyrl-en.variants.top-left-serifed]
rank = 3 rank = 3
@ -5380,6 +5386,7 @@ selector."cyrl/en" = "topLeftSerifed"
selector."cyrl/en.BGR" = "topLeftSerifed" selector."cyrl/en.BGR" = "topLeftSerifed"
selector."cyrl/en/descenderBase" = "topLeftSerifed" selector."cyrl/en/descenderBase" = "topLeftSerifed"
selector."cyrl/nje/leftHalf" = "topLeftSerifed" selector."cyrl/nje/leftHalf" = "topLeftSerifed"
selector."cyrl/nje/leftHalf/reduced" = "topLeftSerifed"
[prime.cyrl-en.variants.tailed-top-left-serifed] [prime.cyrl-en.variants.tailed-top-left-serifed]
rank = 4 rank = 4
@ -5388,6 +5395,7 @@ selector."cyrl/en" = "tailedTopLeftSerifed"
selector."cyrl/en.BGR" = "tailedTopLeftSerifed" selector."cyrl/en.BGR" = "tailedTopLeftSerifed"
selector."cyrl/en/descenderBase" = "topLeftSerifed" selector."cyrl/en/descenderBase" = "topLeftSerifed"
selector."cyrl/nje/leftHalf" = "topLeftSerifed" selector."cyrl/nje/leftHalf" = "topLeftSerifed"
selector."cyrl/nje/leftHalf/reduced" = "topLeftSerifed"
[prime.cyrl-en.variants.top-left-bottom-right-serifed] [prime.cyrl-en.variants.top-left-bottom-right-serifed]
rank = 5 rank = 5
@ -5396,6 +5404,7 @@ selector."cyrl/en" = "topLeftBottomRightSerifed"
selector."cyrl/en.BGR" = "topLeftBottomRightSerifed" selector."cyrl/en.BGR" = "topLeftBottomRightSerifed"
selector."cyrl/en/descenderBase" = "topLeftSerifed" selector."cyrl/en/descenderBase" = "topLeftSerifed"
selector."cyrl/nje/leftHalf" = "topLeftSerifed" selector."cyrl/nje/leftHalf" = "topLeftSerifed"
selector."cyrl/nje/leftHalf/reduced" = "topLeftSerifed"
[prime.cyrl-en.variants.serifed] [prime.cyrl-en.variants.serifed]
rank = 6 rank = 6
@ -5404,6 +5413,7 @@ selector."cyrl/en" = "serifed"
selector."cyrl/en.BGR" = "serifedBGR" selector."cyrl/en.BGR" = "serifedBGR"
selector."cyrl/en/descenderBase" = "serifed" selector."cyrl/en/descenderBase" = "serifed"
selector."cyrl/nje/leftHalf" = "serifed" selector."cyrl/nje/leftHalf" = "serifed"
selector."cyrl/nje/leftHalf/reduced" = "serifedExceptBottomRight"
[prime.cyrl-en.variants.tailed-serifed] [prime.cyrl-en.variants.tailed-serifed]
rank = 7 rank = 7
@ -5412,6 +5422,7 @@ selector."cyrl/en" = "tailedSerifed"
selector."cyrl/en.BGR" = "tailedSerifedBGR" selector."cyrl/en.BGR" = "tailedSerifedBGR"
selector."cyrl/en/descenderBase" = "serifed" selector."cyrl/en/descenderBase" = "serifed"
selector."cyrl/nje/leftHalf" = "serifed" selector."cyrl/nje/leftHalf" = "serifed"
selector."cyrl/nje/leftHalf/reduced" = "serifedExceptBottomRight"