Add variant selector for dot and comma diacritics (#1309).

This commit is contained in:
be5invis 2022-02-19 16:04:07 -08:00
parent 1833fd5445
commit 74d1da86c5
42 changed files with 347 additions and 237 deletions

View file

@ -1,2 +1,3 @@
* Add variant selector for dot and comma diacritics (#1309).
* Fix enclosed glyphs' placement when having glyphs with different Y-shifting (#1310). * Fix enclosed glyphs' placement when having glyphs with different Y-shifting (#1310).

View file

@ -37,15 +37,26 @@ glyph-block Autobuild-Enclosure-Shared : begin
glyph-block-export EnsureComponentGlyphT glyph-block-export EnsureComponentGlyphT
define [EnsureComponentGlyphT gidPart fnBuildup] : begin define [EnsureComponentGlyphT gidPart fnBuildup] : begin
local rs : new Set local rs : new Set
local linksGnMap : new Map
# Build the original
local gniPart : fnBuildup gidPart local gniPart : fnBuildup gidPart
local grs : AnyCv.query [query-glyph gidPart] linksGnMap.set gidPart gniPart
if (para.enableCvSs && grs) : foreach gr [items-of grs] : begin
local relatedGidPart : gr.get [query-glyph gidPart] # Build the related, using a mesh query to find out all variants
local mesh : getGrMesh { gidPart } AnyCv query-glyph
foreach { gr { from } { relatedGidPart } } [items-of mesh] : begin
local gniRelated : fnBuildup relatedGidPart local gniRelated : fnBuildup relatedGidPart
if [query-glyph gniPart] : begin linksGnMap.set relatedGidPart gniRelated
gr.set [query-glyph gniPart] gniRelated
if [query-glyph gniRelated] : begin # Link relations
[query-glyph gniPart].tryBecomeMirrorOf [query-glyph gniRelated] rs foreach { gr { from } { to } } [items-of mesh] : begin
local gniFrom : linksGnMap.get from
local gniTo : linksGnMap.get to
if (gniFrom && gniTo && [query-glyph gniFrom] && [query-glyph gniTo]) : begin
gr.set [query-glyph gniFrom] gniTo
[query-glyph gniFrom].tryBecomeMirrorOf [query-glyph gniTo] rs
return gniPart return gniPart
glyph-block-export getGlyphDefaultShift glyph-block-export getGlyphDefaultShift

View file

@ -10,7 +10,7 @@ glyph-block Autobuild-DCaron : begin
glyph-block-import Mark-Shared-Metrics : markExtend glyph-block-import Mark-Shared-Metrics : markExtend
glyph-block-import Letter-Latin-Lower-D glyph-block-import Letter-Latin-Lower-D
derive-glyphs 'dcaron' 0x10f 'd' : lambda [src sel] : glyph-proc derive-glyphs 'dcaron' 0x10f 'd' : lambda [src gr] : glyph-proc
include : refer-glyph "commaAbove" include : refer-glyph "commaAbove"
include : Translate (Width + (RightSB - SB) / 2 + markExtend / 2) 0 include : Translate (Width + (RightSB - SB) / 2 + markExtend / 2) 0
local f : Widen {src} 0.95 1 local f : Widen {src} 0.95 1

View file

@ -44,7 +44,7 @@ glyph-block Autobuild-Transformed-Shared : begin
local dstName : wrapName groupID srcName local dstName : wrapName groupID srcName
suggestMappedName targetNameMap srcName dstName suggestMappedName targetNameMap srcName dstName
local tree : getGrTree srcName {DotlessOrNot AnyCv} query-glyph local tree : getGrTree srcName { DotlessOrNot AnyCv } query-glyph
foreach [{gr origSrcName relSrcName} : items-of tree] : if [query-glyph relSrcName] : begin foreach [{gr origSrcName relSrcName} : items-of tree] : if [query-glyph relSrcName] : begin
local origDstName : suggestMappedName targetNameMap origSrcName [wrapName groupID origSrcName] local origDstName : suggestMappedName targetNameMap origSrcName [wrapName groupID origSrcName]
local relDstName : suggestMappedName targetNameMap relSrcName [wrapName groupID relSrcName] local relDstName : suggestMappedName targetNameMap relSrcName [wrapName groupID relSrcName]
@ -507,7 +507,7 @@ glyph-block Autobuild-Transformed : begin
list 0x1DEF 'esh' list 0x1DEF 'esh'
createMedievalBelowCombs : list createMedievalBelowCombs : list
list 0x0359 'asterisk.midXH' list 0x0359 'asterisk/sMid'
list 0x1ABF 'w' list 0x1ABF 'w'
list 0x1AC0 'turnw' list 0x1AC0 'turnw'
list 0x1DCA 'r' list 0x1DCA 'r'

View file

@ -1,13 +1,14 @@
$$include '../../meta/macros.ptl' $$include '../../meta/macros.ptl'
import [mix linreg clamp fallback] from '../../support/utils' import [mix linreg clamp fallback] from '../../support/utils'
import [Cv AnyCv AnyDerivingCv Dotless SvInheritableRelations CvDecompose] from '../../support/gr' import [Cv AnyCv AnyDerivingCv Dotless SvInheritableRelations CvDecompose PseudoCvDecompose getGrMesh] from '../../support/gr'
extern Map extern Map
glyph-module glyph-module
glyph-block Common-Derivatives : begin glyph-block Common-Derivatives : begin
glyph-block-export ApplyCv
define [ApplyCv g shapeFrom follow para] : begin define [ApplyCv g shapeFrom follow para] : begin
foreach { kPrime prime } para.variants.primes : foreach h [prime.variants.values] : begin foreach { kPrime prime } para.variants.primes : foreach h [prime.variants.values] : begin
local suffix : h.resolveFor para follow local suffix : h.resolveFor para follow
@ -19,6 +20,7 @@ glyph-block Common-Derivatives : begin
[Cv h.tag h.rank].set g dstName [Cv h.tag h.rank].set g dstName
if h.nonDeriving : [Cv h.tag h.rank].setPreventDeriving g if h.nonDeriving : [Cv h.tag h.rank].setPreventDeriving g
glyph-block-export select-variant
define [select-variant] : params [name unicode [shapeFrom name] [follow name] [reduction null]] : begin define [select-variant] : params [name unicode [shapeFrom name] [follow name] [reduction null]] : begin
if [not : glyph-is-needed name] : return nothing if [not : glyph-is-needed name] : return nothing
@ -34,52 +36,89 @@ glyph-block Common-Derivatives : begin
local v : gr.get [query-glyph (shapeFrom + '.' + variant)] local v : gr.get [query-glyph (shapeFrom + '.' + variant)]
if v : gr.set this v if v : gr.set this v
glyph-block-export orthographic-italic
define [orthographic-italic name unicode] : if para.isItalic define [orthographic-italic name unicode] : if para.isItalic
alias name unicode (name + '.italic') alias name unicode (name + '.italic')
alias name unicode (name + '.upright') alias name unicode (name + '.upright')
glyph-block-export orthographic-slanted
define [orthographic-slanted name unicode] : if para.slopeAngle define [orthographic-slanted name unicode] : if para.slopeAngle
alias name unicode (name + '.slanted') alias name unicode (name + '.slanted')
alias name unicode (name + '.upright') alias name unicode (name + '.upright')
glyph-block-export glyph-is-needed
define [glyph-is-needed name] : [not pickHash] || pickHash.(name) define [glyph-is-needed name] : [not pickHash] || pickHash.(name)
glyph-block-export query-glyph
define [query-glyph id] : return : glyphStore.queryByName id define [query-glyph id] : return : glyphStore.queryByName id
glyph-block-export refer-glyph
define [refer-glyph id] : lambda [copyAnchors copyWidth] : begin define [refer-glyph id] : lambda [copyAnchors copyWidth] : begin
local goal : query-glyph id local goal : query-glyph id
if [not goal] : throw : new Error "Cannot find glyph '\(id)'" if [not goal] : throw : new Error "Cannot find glyph '\(id)'"
this.includeGlyph goal copyAnchors copyWidth this.includeGlyph goal copyAnchors copyWidth
glyph-block-export DeriveMeshT
define [DeriveMeshT gnSources Query Fn] : begin
local linksGnMap : new Map
# Build principal
local gndSource : Fn gnSources null null
linksGnMap.set [keyOfGnList gnSources] gndSource
local mesh : getGrMesh gnSources Query query-glyph
# Build related derivatives
foreach { gr from to } [items-of mesh] : begin
local key : keyOfGnList to
if [not : linksGnMap.has key] : begin
local gnDerivedTo : Fn to gr from
linksGnMap.set key gnDerivedTo
# Link related derivatives
foreach { gr from to } [items-of mesh] : begin
local gndFrom : linksGnMap.get [keyOfGnList from]
local gndTo : linksGnMap.get [keyOfGnList to]
if (gndFrom && gndTo && [query-glyph gndFrom] && [query-glyph gndTo]) : begin
gr.set [query-glyph gndFrom] gndTo
return gndSource
define [keyOfGnList gns] ".deriveKey{\[gns.join '}{']}"
glyph-block-export derive-glyphs
define [derive-glyphs dstGid dstUnicode srcGid Fn] : begin define [derive-glyphs dstGid dstUnicode srcGid Fn] : begin
if [not : glyph-is-needed srcGid] : return nothing if [not : glyph-is-needed dstGid] : return nothing
local glyphSrc : glyphStore.queryByName srcGid DeriveMeshT { srcGid } AnyDerivingCv : function [gns gr] : begin
local glyphDst : create-glyph dstGid dstUnicode : glyph-proc local gn gns.0
include : Fn srcGid null local gnDst : if [not gr] dstGid ".derive{\(dstGid)}{\(gn)}"
local unicodeDst : if [not gr] dstUnicode null
create-glyph gnDst unicodeDst : Fn gn gr
return gnDst
local derivedGlyphIdMap : new Map glyph-block-export derive-multi-part-glyphs
if glyphDst : foreach [gr : items-of : AnyDerivingCv.query glyphSrc] : begin define [derive-multi-part-glyphs dstGid dstUnicode gnSoruces Fn] : begin
local relGidSrc : gr.get glyphSrc if [not : glyph-is-needed dstGid] : return nothing
if [derivedGlyphIdMap.get relGidSrc]
: then : gr.set glyphDst : derivedGlyphIdMap.get relGidSrc
: else : begin
local relGidDst : gr.amendName dstGid
create-glyph relGidDst : glyph-proc : include : Fn [gr.get glyphSrc] gr.tag
gr.set glyphDst relGidDst
derivedGlyphIdMap.set relGidSrc relGidDst
DeriveMeshT gnSoruces AnyDerivingCv : function [gns gr] : begin
local gnDst : if [not gr] dstGid ".derive{\(dstGid)}{\[gns.join '}{']}"
local unicodeDst : if [not gr] dstUnicode null
create-glyph gnDst unicodeDst : Fn gns gr
return gnDst
glyph-block-export derive-composites
define [derive-composites dstGid dstUnicode srcGid] : begin define [derive-composites dstGid dstUnicode srcGid] : begin
if [not : glyph-is-needed srcGid] : return nothing if [not : glyph-is-needed srcGid] : return nothing
local restComponents : {}.slice.call arguments 3 local restComponents : {}.slice.call arguments 3
return : derive-glyphs dstGid dstUnicode srcGid : lambda [src sel] : glyph-proc return : derive-glyphs dstGid dstUnicode srcGid : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
foreach component [items-of restComponents] : begin foreach component [items-of restComponents] : begin
if ([typeof component] === 'string') if ([typeof component] === 'string')
: then : include [refer-glyph component] : then : include [refer-glyph component]
: else : include component : else : include component
glyph-block-export alias
define [alias dstGid dstUnicode srcGid] : begin define [alias dstGid dstUnicode srcGid] : begin
if [not dstGid] : throw : new Error "Target ID not specified" if [not dstGid] : throw : new Error "Target ID not specified"
if [not : glyph-is-needed srcGid] : return nothing if [not : glyph-is-needed srcGid] : return nothing
@ -94,10 +133,11 @@ glyph-block Common-Derivatives : begin
if [gr.getPreventDeriving glyphSrc] : gr.setPreventDeriving glyphDst if [gr.getPreventDeriving glyphSrc] : gr.setPreventDeriving glyphDst
if [Dotless.get glyphSrc] : Dotless.set glyphDst [Dotless.get glyphSrc] if [Dotless.get glyphSrc] : Dotless.set glyphDst [Dotless.get glyphSrc]
glyph-block-export turned
define [turned newid unicode id _x _y mark] : begin define [turned newid unicode id _x _y mark] : begin
if [not newid] : throw : new Error "Target ID not specified" if [not newid] : throw : new Error "Target ID not specified"
derive-glyphs newid unicode id derive-glyphs newid unicode id
lambda [src sel] : glyph-proc lambda [src gr] : glyph-proc
include [refer-glyph src] [if mark false AS_BASE] ALSO_METRICS include [refer-glyph src] [if mark false AS_BASE] ALSO_METRICS
if mark : include mark if mark : include mark
define x : if (_x <@ Function) [_x.call currentGlyph] _x define x : if (_x <@ Function) [_x.call currentGlyph] _x
@ -111,16 +151,20 @@ glyph-block Common-Derivatives : begin
include : Translate x y include : Translate x y
include : Italify include : Italify
glyph-block-export link-reduced-variant
define [link-reduced-variant] : params [dstGid srcGid gr follow] : begin define [link-reduced-variant] : params [dstGid srcGid gr follow] : begin
if [not : query-glyph dstGid] : select-variant dstGid (shapeFrom -- srcGid) (follow -- [fallback follow dstGid]) if [not : query-glyph dstGid] : select-variant dstGid (shapeFrom -- srcGid) (follow -- [fallback follow dstGid])
if (gr && [query-glyph srcGid]) : gr.set [query-glyph srcGid] dstGid if (gr && [query-glyph srcGid]) : gr.set [query-glyph srcGid] dstGid
glyph-block-export alias-reduced-variant
define [alias-reduced-variant dstGid srcGid shapeGid gr] : begin define [alias-reduced-variant dstGid srcGid shapeGid gr] : begin
alias dstGid null shapeGid alias dstGid null shapeGid
if (gr && [query-glyph srcGid]) : gr.set [query-glyph srcGid] dstGid if (gr && [query-glyph srcGid]) : gr.set [query-glyph srcGid] dstGid
glyph-block-export HalfAdvance
define [HalfAdvance] : this.advanceWidth / 2 define [HalfAdvance] : this.advanceWidth / 2
glyph-block-export TurnMarks
define [TurnMarks k fnOverride] : glyph-proc define [TurnMarks k fnOverride] : glyph-proc
local df : DivFrame (currentGlyph.advanceWidth / Width) local df : DivFrame (currentGlyph.advanceWidth / Width)
local mx : compositeBaseAnchors [df.markSet.(k)] local mx : compositeBaseAnchors [df.markSet.(k)]
@ -128,6 +172,7 @@ glyph-block Common-Derivatives : begin
include mx include mx
# Dual derivatives # Dual derivatives
glyph-block-export HCombine
define [HCombine newid unicode id1 id2 spacing] : begin define [HCombine newid unicode id1 id2 spacing] : begin
if [not newid] : throw : new Error "Target ID not specified" if [not newid] : throw : new Error "Target ID not specified"
create-glyph newid unicode : glyph-proc create-glyph newid unicode : glyph-proc
@ -136,10 +181,12 @@ glyph-block Common-Derivatives : begin
include [refer-glyph id2] include [refer-glyph id2]
include : Translate (spacing / 2) 0 include : Translate (spacing / 2) 0
glyph-block-export HDual
define [HDual newid unicode id spacing] : begin define [HDual newid unicode id spacing] : begin
if [not newid] : throw : new Error "Target ID not specified" if [not newid] : throw : new Error "Target ID not specified"
return : HCombine newid unicode id id spacing return : HCombine newid unicode id id spacing
glyph-block-export VCombine
define [VCombine newid unicode id1 id2 spacing] : begin define [VCombine newid unicode id1 id2 spacing] : begin
if [not newid] : throw : new Error "Target ID not specified" if [not newid] : throw : new Error "Target ID not specified"
create-glyph newid unicode : glyph-proc create-glyph newid unicode : glyph-proc
@ -147,11 +194,14 @@ glyph-block Common-Derivatives : begin
include : Translate (-spacing * TanSlope) (-spacing) include : Translate (-spacing * TanSlope) (-spacing)
include [refer-glyph id1] include [refer-glyph id1]
include : Translate (spacing * TanSlope / 2) (spacing / 2) include : Translate (spacing * TanSlope / 2) (spacing / 2)
glyph-block-export VDual
define [VDual newid unicode id spacing] : begin define [VDual newid unicode id spacing] : begin
if [not newid] : throw : new Error "Target ID not specified" if [not newid] : throw : new Error "Target ID not specified"
return : VCombine newid unicode id id spacing return : VCombine newid unicode id id spacing
# Two-art glyphs # Two-part glyphs
glyph-block-export create-two-part-glyph
define [create-two-part-glyph newid unicode id1 id2] : begin define [create-two-part-glyph newid unicode id1 id2] : begin
create-glyph newid unicode : glyph-proc create-glyph newid unicode : glyph-proc
set-width ([query-glyph id1].advanceWidth + [query-glyph id2].advanceWidth) set-width ([query-glyph id1].advanceWidth + [query-glyph id2].advanceWidth)
@ -160,12 +210,6 @@ glyph-block Common-Derivatives : begin
CvDecompose.set currentGlyph { id1 id2 } CvDecompose.set currentGlyph { id1 id2 }
glyph-block-export select-variant orthographic-italic orthographic-slanted
glyph-block-export refer-glyph query-glyph derive-glyphs derive-composites
glyph-block-export link-reduced-variant alias-reduced-variant
glyph-block-export alias turned HDual HCombine VDual VCombine glyph-is-needed
glyph-block-export HalfAdvance TurnMarks create-two-part-glyph
glyph-block Recursive-Build : begin glyph-block Recursive-Build : begin
define [Fork gs ps] : begin define [Fork gs ps] : begin
# BFS construct ShouldBuildList # BFS construct ShouldBuildList

View file

@ -50,7 +50,7 @@ glyph-block Letter-Greek-Pi : begin
include : MarkSet.e include : MarkSet.e
include : PiShape [DivFrame 1] XH 0 (shrinkRate -- 0) (doSerif -- SLAB) include : PiShape [DivFrame 1] XH 0 (shrinkRate -- 0) (doSerif -- SLAB)
derive-glyphs 'cyrl/pe.SRB' null 'u' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/pe.SRB' null 'u' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE include [refer-glyph src] AS_BASE
include : refer-glyph "macronAbove" include : refer-glyph "macronAbove"

View file

@ -100,7 +100,7 @@ glyph-block Letter-Greek-Upper-Gamma: begin
select-variant 'grek/Digamma' 0x3DC (follow -- 'grek/Gamma') select-variant 'grek/Digamma' 0x3DC (follow -- 'grek/Gamma')
derive-glyphs 'cyrl/GheHook' 0x494 'cyrl/Ghe' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/GheHook' 0x494 'cyrl/Ghe' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : nShoulder include : nShoulder
left -- (GammaBarLeft + Stroke * HVContrast) left -- (GammaBarLeft + Stroke * HVContrast)
@ -111,7 +111,7 @@ glyph-block Letter-Greek-Upper-Gamma: begin
smb -- SmoothB smb -- SmoothB
include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook
derive-glyphs 'cyrl/gheHook' 0x495 'cyrl/ghe.upright' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/gheHook' 0x495 'cyrl/ghe.upright' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : nShoulder include : nShoulder
left -- (GammaBarLeft + Stroke * HVContrast) left -- (GammaBarLeft + Stroke * HVContrast)

View file

@ -301,7 +301,7 @@ glyph-block Letter-Latin-C : begin
CShapeOutline [DivFrame 1] XH 0 SmallSmoothA SmallSmoothB BBS CShapeOutline [DivFrame 1] XH 0 SmallSmoothA SmallSmoothB BBS
VBarLeft (SB + BBD + OX) 0 CAP BBS VBarLeft (SB + BBD + OX) 0 CAP BBS
derive-glyphs 'currency/euroSign' 0x20AC 'C' : lambda [src sel] : glyph-proc derive-glyphs 'currency/euroSign' 0x20AC 'C' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS 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.4)
include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.7] (CAP * 0.6) include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.7] (CAP * 0.6)
@ -376,38 +376,38 @@ glyph-block Letter-Latin-C : begin
derive-composites 'grek/dotLunateSmallSigma' 0x37C 'grek/lunateSmallSigma' 'grek/lunateSigmaDotSmall' derive-composites 'grek/dotLunateSmallSigma' 0x37C 'grek/lunateSmallSigma' 'grek/lunateSigmaDotSmall'
derive-composites 'grek/dotRevLunateSmallSigma' 0x37D 'grek/revLunateSmallSigma' 'grek/lunateSigmaDotSmall' derive-composites 'grek/dotRevLunateSmallSigma' 0x37D 'grek/revLunateSmallSigma' 'grek/lunateSigmaDotSmall'
derive-glyphs 'Cbar' 0xA792 'C' : lambda [src sel] : glyph-proc derive-glyphs 'Cbar' 0xA792 'C' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (CAP * OverlayPos) include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (CAP * OverlayPos)
derive-glyphs 'cbar' 0xA793 'c' : lambda [src sel] : glyph-proc derive-glyphs 'cbar' 0xA793 'c' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (XH * OverlayPos) include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (XH * OverlayPos)
derive-glyphs 'cyrl/E' 0x42D 'revC' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/E' 0x42D 'revC' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : HBar [mix SB RightSB 0.35] RightSB (CAP / 2) include : HBar [mix SB RightSB 0.35] RightSB (CAP / 2)
derive-glyphs 'cyrl/e' 0x44D 'revSmallC' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/e' 0x44D 'revSmallC' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : HBar [mix SB RightSB 0.35] RightSB (XH / 2) include : HBar [mix SB RightSB 0.35] RightSB (XH / 2)
derive-glyphs 'cyrl/Ye' 0x404 'C' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/Ye' 0x404 'C' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : HBar SB [mix RightSB SB 0.35] (CAP / 2) [AdviceStroke2 2 4 CAP] include : HBar SB [mix RightSB SB 0.35] (CAP / 2) [AdviceStroke2 2 4 CAP]
derive-glyphs 'cyrl/ye' 0x454 'c' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/ye' 0x454 'c' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : HBar SB [mix RightSB SB 0.35] (XH / 2) [AdviceStroke2 2 4 XH] include : HBar SB [mix RightSB SB 0.35] (XH / 2) [AdviceStroke2 2 4 XH]
derive-glyphs 'cyrl/Koppa' 0x480 'CTopSerifOnly' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/Koppa' 0x480 'CTopSerifOnly' : lambda [src gr] : glyph-proc
include : MarkSet.if include : MarkSet.if
include : union [VBarRight (Middle + Stroke * HVContrast) Descender (Stroke / 2)] : difference include : union [VBarRight (Middle + Stroke * HVContrast) Descender (Stroke / 2)] : difference
refer-glyph src refer-glyph src
Rect (CAP / 2) Descender (Middle + Stroke * HVContrast) (Width * 4) Rect (CAP / 2) Descender (Middle + Stroke * HVContrast) (Width * 4)
Rect (XH / 2) [mix Stroke Hook 0.5] Middle (Width * 4) Rect (XH / 2) [mix Stroke Hook 0.5] Middle (Width * 4)
derive-glyphs 'cyrl/koppa' 0x481 'cTopSerifOnly' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/koppa' 0x481 'cTopSerifOnly' : lambda [src gr] : glyph-proc
include : MarkSet.p include : MarkSet.p
include : union [VBarRight (Middle + Stroke * HVContrast) Descender (Stroke / 2)] : difference include : union [VBarRight (Middle + Stroke * HVContrast) Descender (Stroke / 2)] : difference
refer-glyph src refer-glyph src

View file

@ -72,12 +72,12 @@ glyph-block Letter-Latin-Lower-B : begin
select-variant 'bHookTop' 0x253 select-variant 'bHookTop' 0x253
derive-glyphs 'bdot' 0x1E03 'b' : lambda [src sel] : glyph-proc derive-glyphs 'bdot' 0x1E03 'b' : lambda [src gr] : glyph-proc
include : refer-glyph "dotAbove" include : refer-glyph "dotAbove"
include : Translate (Width + HalfStroke) 0 include : Translate (Width + HalfStroke) 0
include [refer-glyph src] AS_BASE include [refer-glyph src] AS_BASE
derive-glyphs 'latinbe' 0x183 'b' : lambda [src sel] : glyph-proc derive-glyphs 'latinbe' 0x183 'b' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE include [refer-glyph src] AS_BASE
include : HBarTop (SB - O) [mix SB RightSB 0.9] CAP include : HBarTop (SB - O) [mix SB RightSB 0.9] CAP
if SLAB : begin if SLAB : begin

View file

@ -148,7 +148,7 @@ glyph-block Letter-Latin-Lower-D : begin
derive-composites 'dHookBottom' 0x256 'd/hookBottomBase' 'rtailBR' derive-composites 'dHookBottom' 0x256 'd/hookBottomBase' 'rtailBR'
derive-composites 'dHookTopBottom' 0x1D91 'dHookTop/hookBottomBase' 'rtailBR' derive-composites 'dHookTopBottom' 0x1D91 'dHookTop/hookBottomBase' 'rtailBR'
derive-glyphs 'ddot' 0x1E0B 'd' : lambda [src sel] : glyph-proc derive-glyphs 'ddot' 0x1E0B 'd' : lambda [src gr] : glyph-proc
include : refer-glyph "dotAbove" include : refer-glyph "dotAbove"
include : Translate (Width - HalfStroke) 0 include : Translate (Width - HalfStroke) 0
include [refer-glyph src] AS_BASE include [refer-glyph src] AS_BASE

View file

@ -136,7 +136,7 @@ glyph-block Letter-Latin-Lower-H : begin
if SLAB : begin if SLAB : begin
include : LeftwardTopSerif (RightSB - Stroke * HVContrast) XH SideJut include : LeftwardTopSerif (RightSB - Stroke * HVContrast) XH SideJut
derive-glyphs 'hCedilla' 0x1E29 'h' : lambda [src sel] : glyph-proc derive-glyphs 'hCedilla' 0x1E29 'h' : lambda [src gr] : glyph-proc
include [refer-glyph 'cedillaBelow'] include [refer-glyph 'cedillaBelow']
include : ApparentTranslate (Width + SB - Middle + HalfStroke * HVContrast) 0 include : ApparentTranslate (Width + SB - Middle + HalfStroke * HVContrast) 0
include [refer-glyph src] include [refer-glyph src]

View file

@ -8,7 +8,6 @@ glyph-module
glyph-block Letter-Latin-Lower-I : begin glyph-block Letter-Latin-Lower-I : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared : CreateDottedComposition
glyph-block-import Letter-Shared : CreateAccentedComposition CreateMultiAccentedComposition glyph-block-import Letter-Shared : CreateAccentedComposition CreateMultiAccentedComposition
glyph-block-import Letter-Shared-Shapes : FlatHookDepth DiagonalTailR DiagonalTailStdDepth glyph-block-import Letter-Shared-Shapes : FlatHookDepth DiagonalTailR DiagonalTailStdDepth
@ -285,10 +284,10 @@ glyph-block Letter-Latin-Lower-I : begin
include [refer-glyph 'dotlessi'] AS_BASE include [refer-glyph 'dotlessi'] AS_BASE
include : refer-glyph "ogonekBelow" include : refer-glyph "ogonekBelow"
CreateDottedComposition 'dotlessi' 'i' 'i' true CreateAccentedComposition 'i' 'i' 'dotlessi' 'dotAbove'
CreateDottedComposition 'dotlessi/sansSerif' 'i/sansSerif' null true CreateAccentedComposition 'i/sansSerif' null 'dotlessi/sansSerif' 'dotAbove'
CreateDottedComposition 'dotlessi' 'cyrl/Ukrainiani' 0x456 CreateAccentedComposition 'cyrl/Ukrainiani' 0x456 'dotlessi' 'dotAbove'
CreateDottedComposition 'dotlessi/compLigRight' 'i/compLigRight' null CreateAccentedComposition 'i/compLigRight' null 'dotlessi/compLigRight' 'dotAbove'
link-reduced-variant 'i/sansSerif' 'i' MathSansSerif link-reduced-variant 'i/sansSerif' 'i' MathSansSerif
alias 'grek/iota.flatTailed' null 'dotlessi.flatTailed' alias 'grek/iota.flatTailed' null 'dotlessi.flatTailed'
@ -318,4 +317,4 @@ glyph-block Letter-Latin-Lower-I : begin
Dotless.set currentGlyph 'mathbb/dotlessi' Dotless.set currentGlyph 'mathbb/dotlessi'
CreateAccentedComposition 'dotlessiBarOver' null 'dotlessi' 'barOver' CreateAccentedComposition 'dotlessiBarOver' null 'dotlessi' 'barOver'
CreateDottedComposition 'dotlessiBarOver' 'iBarOver' 0x268 CreateAccentedComposition 'iBarOver' 0x268 'dotlessiBarOver' 'dotAbove'

View file

@ -8,7 +8,7 @@ glyph-module
glyph-block Letter-Latin-Lower-J : begin glyph-block Letter-Latin-Lower-J : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared : CreateDottedComposition glyph-block-import Letter-Shared : CreateAccentedComposition
glyph-block-import Letter-Shared-Shapes : CurlyTail FlatHookDepth glyph-block-import Letter-Shared-Shapes : CurlyTail FlatHookDepth
glyph-block-import Letter-Shared-Shapes : DiagonalTailL DiagonalTailStdDepth glyph-block-import Letter-Shared-Shapes : DiagonalTailL DiagonalTailStdDepth
glyph-block-import Letter-Blackboard : BBS BBD glyph-block-import Letter-Blackboard : BBS BBD
@ -146,10 +146,10 @@ glyph-block Letter-Latin-Lower-J : begin
select-variant 'dotlessj' 0x237 select-variant 'dotlessj' 0x237
link-reduced-variant 'dotlessj/sansSerif' 'dotlessj' MathSansSerif link-reduced-variant 'dotlessj/sansSerif' 'dotlessj' MathSansSerif
CreateDottedComposition 'dotlessj' 'j' 'j' true CreateAccentedComposition 'j' 'j' 'dotlessj' 'dotAbove'
CreateDottedComposition 'dotlessj/sansSerif' 'j/sansSerif' null true CreateAccentedComposition 'j/sansSerif' null 'dotlessj/sansSerif' 'dotAbove'
CreateDottedComposition 'dotlessj' 'grek/yot' 0x3F3 CreateAccentedComposition 'grek/yot' 0x3F3 'dotlessj' 'dotAbove'
CreateDottedComposition 'dotlessj' 'cyrl/je' 0x458 CreateAccentedComposition 'cyrl/je' 0x458 'dotlessj' 'dotAbove'
link-reduced-variant 'j/sansSerif' 'j' MathSansSerif link-reduced-variant 'j/sansSerif' 'j' MathSansSerif
create-glyph 'dotlessjCurlyTail.serifless' : glyph-proc create-glyph 'dotlessjCurlyTail.serifless' : glyph-proc
@ -171,4 +171,4 @@ glyph-block Letter-Latin-Lower-J : begin
include : LeftwardTopSerif (Middle + JBalance) XH LongJut include : LeftwardTopSerif (Middle + JBalance) XH LongJut
select-variant 'dotlessjCurlyTail' select-variant 'dotlessjCurlyTail'
CreateDottedComposition 'dotlessjCurlyTail' 'jCurlyTail' 0x29D CreateAccentedComposition 'jCurlyTail' 0x29D 'dotlessjCurlyTail' 'dotAbove'

View file

@ -181,9 +181,9 @@ glyph-block Letter-Latin-Lower-L : begin
include : HBarTop (Middle - BBD / 2 - Jut) Middle CAP BBS include : HBarTop (Middle - BBD / 2 - Jut) Middle CAP BBS
include : HBarBottom (Middle - BBD / 2 - Jut) (Middle + BBD / 2 + Jut) 0 BBS include : HBarBottom (Middle - BBD / 2 - Jut) (Middle + BBD / 2 + Jut) 0 BBS
CreateCommaCaronComposition 'l' 'lcaron' 0x13E CreateCommaCaronComposition 'lcaron' 0x13E 'l'
derive-glyphs 'lSlash' 0x142 'l' : lambda [src sel] : glyph-proc derive-glyphs 'lSlash' 0x142 'l' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
local anchor currentGlyph.baseAnchors.overlay local anchor currentGlyph.baseAnchors.overlay
local stretch : Math.sqrt (currentGlyph.advanceWidth / UPM * 2) local stretch : Math.sqrt (currentGlyph.advanceWidth / UPM * 2)

View file

@ -142,19 +142,11 @@ glyph-block Letter-Latin-Lower-N : begin
derive-composites 'cyrl/peDescender.italic' null 'cyrl/peItalicDescBase' [CyrDescender RightSB] derive-composites 'cyrl/peDescender.italic' null 'cyrl/peItalicDescBase' [CyrDescender RightSB]
do "n with Apostrophe" do "n with Apostrophe"
create-glyph 'nApostrophe/comma.round' : glyph-proc derive-glyphs 'nApostrophe/comma' null 'commaAbove' : function [src gr] : glyph-proc
set-width 0 set-width 0
Joining.set currentGlyph Joining.Classes.Right Joining.set currentGlyph Joining.Classes.Right
include : WithTransform [Translate (Width + SB - Middle) 0] include : WithTransform [Translate (Width + SB - Middle) 0]
refer-glyph "commaAbove" refer-glyph src
create-glyph 'nApostrophe/comma.square' : glyph-proc
set-width 0
Joining.set currentGlyph Joining.Classes.Right
include : WithTransform [Translate (Width + SB - Middle) 0]
refer-glyph "commaAboveSquare"
select-variant 'nApostrophe/comma' (follow -- 'punctuationDot')
create-two-part-glyph 'nApostrophe' 0x149 'nApostrophe/comma' 'n' create-two-part-glyph 'nApostrophe' 0x149 'nApostrophe/comma' 'n'

View file

@ -52,7 +52,7 @@ glyph-block Letter-Latin-Lower-P : begin
link-reduced-variant 'p/hookTopBase' 'p' link-reduced-variant 'p/hookTopBase' 'p'
select-variant 'cyrl/er' 0x440 (shapeFrom -- 'p') select-variant 'cyrl/er' 0x440 (shapeFrom -- 'p')
derive-glyphs 'cyrl/rrTick' 0x48F 'cyrl/er' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/rrTick' 0x48F 'cyrl/er' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : dispiro include : dispiro
widths.center [AdviceStroke 4] widths.center [AdviceStroke 4]
@ -71,7 +71,7 @@ glyph-block Letter-Latin-Lower-P : begin
top -- XH top -- XH
stroke -- BBS stroke -- BBS
derive-glyphs 'pHookTop' 0x1A5 "p/hookTopBase" : function [src sel] : glyph-proc derive-glyphs 'pHookTop' 0x1A5 "p/hookTopBase" : function [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
eject-contour 'serifLT' eject-contour 'serifLT'
eject-contour 'stemLeft' eject-contour 'stemLeft'

View file

@ -203,7 +203,7 @@ glyph-block Letter-Latin-Lower-T : begin
select-variant 't/phoneticLeft1' (shapeFrom -- 't') select-variant 't/phoneticLeft1' (shapeFrom -- 't')
select-variant 't/phoneticLeft2' (shapeFrom -- 't') select-variant 't/phoneticLeft2' (shapeFrom -- 't')
select-variant 'turnt' 0x287 (follow -- 't') select-variant 'turnt' 0x287 (follow -- 't')
CreateCommaCaronComposition 't' 'tcaron' 0x165 CreateCommaCaronComposition 'tcaron' 0x165 't'
derive-glyphs 'tCedilla' 0x163 't' ConnectedCedilla derive-glyphs 'tCedilla' 0x163 't' ConnectedCedilla
select-variant "tHookTop" 0x1AD select-variant "tHookTop" 0x1AD

View file

@ -71,25 +71,27 @@ glyph-block Letter-Latin-O : begin
VBarLeft (SB + OX + BBD) 0 XH BBS VBarLeft (SB + OX + BBD) 0 XH BBS
VBarRight (RightSB - OX - BBD) 0 XH BBS VBarRight (RightSB - OX - BBD) 0 XH BBS
create-glyph 'OHorn' 0x01A0 : glyph-proc derive-multi-part-glyphs 'OHorn' 0x01A0 {'O' 'longHorn'} : function [srcs gr] : glyph-proc
local { base horn } srcs
include : MarkSet.capital include : MarkSet.capital
include : HornBaseAnchor RightSB CAP (Width / 2) (SmoothB) 0.5 include : HornBaseAnchor RightSB CAP (Width / 2) (SmoothB) 0.5
include : difference include : difference
new-glyph : glyph-proc new-glyph : glyph-proc
include : MarkSet.capital include : MarkSet.capital
include [refer-glyph 'longHorn'] include [refer-glyph horn]
OShapeOutline.NoOvershoot CAP 0 SB RightSB nothing SmoothA SmoothB OShapeOutline.NoOvershoot CAP 0 SB RightSB nothing SmoothA SmoothB
include : refer-glyph "O" include : refer-glyph base
create-glyph 'oHorn' 0x01A1 : glyph-proc derive-multi-part-glyphs 'oHorn' 0x01A1 {'o' 'longHorn'} : function [srcs gr] : glyph-proc
local { base horn } srcs
include : MarkSet.e include : MarkSet.e
include : HornBaseAnchor RightSB XH (Width / 2) (SmoothB) 0.5 include : HornBaseAnchor RightSB XH (Width / 2) (SmoothB) 0.5
include : difference include : difference
new-glyph : glyph-proc new-glyph : glyph-proc
include : MarkSet.e include : MarkSet.e
include [refer-glyph 'longHorn'] include [refer-glyph horn]
OShapeOutline.NoOvershoot XH 0 SB RightSB nothing nothing nothing OShapeOutline.NoOvershoot XH 0 SB RightSB nothing nothing nothing
include : refer-glyph "o" include : refer-glyph base
create-glyph 'Oslash' 0xD8 : glyph-proc create-glyph 'Oslash' 0xD8 : glyph-proc
local fine : 0.5 * OverlayStroke local fine : 0.5 * OverlayStroke

View file

@ -189,11 +189,11 @@ glyph-block Letter-Latin-U : begin
select-variant 'cyrl/i.italic.reduced' (shapeFrom -- 'u') select-variant 'cyrl/i.italic.reduced' (shapeFrom -- 'u')
alias 'cyrl/i.BGR' null 'cyrl/i.italic' alias 'cyrl/i.BGR' null 'cyrl/i.italic'
derive-glyphs 'cyrl/ibreve.BGR' null 'cyrl/i.BGR' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/ibreve.BGR' null 'cyrl/i.BGR' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include [refer-glyph 'breveAbove'] include [refer-glyph 'breveAbove']
derive-glyphs 'cyrl/igrave.BGR' null 'cyrl/i.BGR' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/igrave.BGR' null 'cyrl/i.BGR' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include [refer-glyph 'graveAbove'] include [refer-glyph 'graveAbove']
@ -222,7 +222,7 @@ glyph-block Letter-Latin-U : begin
include : MarkSet.e include : MarkSet.e
include : LatinUpsilon2Shape XH SmallSmoothA SmallSmoothB include : LatinUpsilon2Shape XH SmallSmoothA SmallSmoothB
derive-glyphs 'uWithLightCentralizationStroke' null 'u' : function [src sel] : glyph-proc derive-glyphs 'uWithLightCentralizationStroke' null 'u' : function [src gr] : glyph-proc
include : MarkSet.p include : MarkSet.p
include : refer-glyph src include : refer-glyph src
local fine : AdviceStroke 4 local fine : AdviceStroke 4

View file

@ -103,7 +103,7 @@ glyph-block Letter-Latin-Upper-A : begin
select-variant 'grek/Delta' 0x394 select-variant 'grek/Delta' 0x394
derive-glyphs 'cyrl/De.BGR' null 'grek/Delta' : function [src sel] : glyph-proc derive-glyphs 'cyrl/De.BGR' null 'grek/Delta' : function [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
local descenderOverflow : if SLAB SideJut ((RightSB - SB) * 0.075) local descenderOverflow : if SLAB SideJut ((RightSB - SB) * 0.075)
local xCutLeft SB local xCutLeft SB

View file

@ -174,7 +174,7 @@ glyph-block Letter-Latin-Upper-B : begin
VBarRight ([mix SB RightSB BArcMix] - BBD - OX * 2) (CAP * BBarPos) CAP BBS VBarRight ([mix SB RightSB BArcMix] - BBD - OX * 2) (CAP * BBarPos) CAP BBS
VBarLeft (SB + BBD) 0 CAP BBS VBarLeft (SB + BBD) 0 CAP BBS
derive-glyphs 'Bhookleft' 0x181 'B' : lambda [src sel] : glyph-proc derive-glyphs 'Bhookleft' 0x181 'B' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
eject-contour "serifLT" eject-contour "serifLT"
include : LeftHook SB CAP include : LeftHook SB CAP

View file

@ -83,18 +83,18 @@ glyph-block Letter-Latin-Upper-D : begin
select-variant 'romanFiveThousand' 0x2181 (follow -- 'D') select-variant 'romanFiveThousand' 0x2181 (follow -- 'D')
select-variant 'romanFiftyThousand' 0x2187 (follow -- 'D') select-variant 'romanFiftyThousand' 0x2187 (follow -- 'D')
link-reduced-variant 'D/sansSerif' 'D' MathSansSerif link-reduced-variant 'D/sansSerif' 'D' MathSansSerif
derive-glyphs 'Eth' 0xD0 'D' : lambda [src sel] : glyph-proc derive-glyphs 'Eth' 0xD0 'D' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (CAP * OverlayPos) include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (CAP * OverlayPos)
alias 'Dcroat' 0x110 'Eth' alias 'Dcroat' 0x110 'Eth'
alias 'arficanD' 0x189 'Eth' alias 'arficanD' 0x189 'Eth'
select-variant 'smcpD' 0x1D05 (follow -- 'D') select-variant 'smcpD' 0x1D05 (follow -- 'D')
derive-glyphs 'smcpEth' 0x1D06 'smcpD' : lambda [src sel] : glyph-proc derive-glyphs 'smcpEth' 0x1D06 'smcpD' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (XH * OverlayPos) include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (XH * OverlayPos)
derive-glyphs 'Dhookleft' 0x18a 'D' : lambda [src sel] : glyph-proc derive-glyphs 'Dhookleft' 0x18a 'D' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
eject-contour 'serifLT' eject-contour 'serifLT'
include : LeftHook SB CAP include : LeftHook SB CAP

View file

@ -89,7 +89,7 @@ glyph-block Letter-Latin-Upper-F : begin
turned 'turnSmcpF' 0x214E 'smcpF' Middle (XH / 2) turned 'turnSmcpF' 0x214E 'smcpF' Middle (XH / 2)
derive-glyphs 'Fltail' 0x191 'F' : lambda [src sel] : glyph-proc derive-glyphs 'Fltail' 0x191 'F' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : MarkSet.if include : MarkSet.if
eject-contour 'serifBottom' eject-contour 'serifBottom'

View file

@ -177,7 +177,7 @@ glyph-block Letter-Latin-Upper-H : begin
derive-composites 'smcpHbar' null 'smcpH' derive-composites 'smcpHbar' null 'smcpH'
HOverlayBar [mix SB 0 0.7] [mix RightSB Width 0.7] (XH * 0.725) HOverlayBar [mix SB 0 0.7] [mix RightSB Width 0.7] (XH * 0.725)
derive-glyphs 'HCedilla' 0x1E28 'H' : lambda [src sel] : glyph-proc derive-glyphs 'HCedilla' 0x1E28 'H' : lambda [src gr] : glyph-proc
include [refer-glyph 'cedillaBelow'] include [refer-glyph 'cedillaBelow']
include : Translate (Width + SB - Middle + HalfStroke * HVContrast) 0 include : Translate (Width + SB - Middle + HalfStroke * HVContrast) 0
include [refer-glyph src] include [refer-glyph src]

View file

@ -50,7 +50,7 @@ glyph-block Letter-Latin-Upper-L : begin
include : VBarLeft (LBarLeftX + BBD) 0 CAP BBS include : VBarLeft (LBarLeftX + BBD) 0 CAP BBS
include : HBarTop LBarLeftX (LBarLeftX + BBD) CAP BBS include : HBarTop LBarLeftX (LBarLeftX + BBD) CAP BBS
derive-glyphs 'Lcaron' 0x13D 'L' : lambda [src sel] : glyph-proc derive-glyphs 'Lcaron' 0x13D 'L' : lambda [src gr] : glyph-proc
include : WithTransform [Translate (Width + (RightSB - SB) * 0.375) 0] include : WithTransform [Translate (Width + (RightSB - SB) * 0.375) 0]
refer-glyph "commaAbove" refer-glyph "commaAbove"
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
@ -62,15 +62,15 @@ glyph-block Letter-Latin-Upper-L : begin
flat [mix 0 SB 0.5] (middle - LongJut * 0.4) [widths fine fine] 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) curl (1.6 * LongJut + [mix 0 SB 0.5]) (middle + LongJut * 0.4)
derive-glyphs 'LSlash' 0x141 'L' : lambda [src sel] : glyph-proc derive-glyphs 'LSlash' 0x141 'L' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : LSlashOverlay CAP include : LSlashOverlay CAP
derive-glyphs 'smcpLSlash' 0x1D0C 'smcpL' : lambda [src sel] : glyph-proc derive-glyphs 'smcpLSlash' 0x1D0C 'smcpL' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : LSlashOverlay XH include : LSlashOverlay XH
derive-glyphs 'LTildeOver' 0x2C62 'L' : lambda [src sel] : glyph-proc derive-glyphs 'LTildeOver' 0x2C62 'L' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : new-glyph : glyph-proc include : new-glyph : glyph-proc
include : refer-glyph "tildeAboveOverlay" include : refer-glyph "tildeAboveOverlay"

View file

@ -176,7 +176,7 @@ glyph-block Letter-Latin-Upper-P : begin
select-variant 'currency/rubleSign' 0x20BD select-variant 'currency/rubleSign' 0x20BD
select-variant 'PHookLeft' 0x1A4 select-variant 'PHookLeft' 0x1A4
derive-glyphs 'cyrl/ErTick' 0x48E 'cyrl/Er' : lambda [src sel] : glyph-proc derive-glyphs 'cyrl/ErTick' 0x48E 'cyrl/Er' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
local yBowl : [PBarPosY CAP Stroke PShape.BarPos] + 0.75 * Stroke local yBowl : [PBarPosY CAP Stroke PShape.BarPos] + 0.75 * Stroke
include : dispiro include : dispiro

View file

@ -256,7 +256,7 @@ glyph-block Letter-Latin-Upper-R : begin
select-variant 'currency/indianRupeeSign' 0x20B9 (follow -- 'RRotunda') select-variant 'currency/indianRupeeSign' 0x20B9 (follow -- 'RRotunda')
derive-glyphs 'Rbar' 0x24C 'R' : lambda [src sel] : glyph-proc derive-glyphs 'Rbar' 0x24C 'R' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS 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) include : HBar [mix 0 SB 0.3] (SB - O) ((CAP - Stroke) * [RBarPos CAP SLAB] + Stroke * 0.25)

View file

@ -130,7 +130,7 @@ glyph-block Letter-Latin-Upper-Y : begin
select-variant 'grek/Upsilon' 0x3A5 (follow -- 'Y') select-variant 'grek/Upsilon' 0x3A5 (follow -- 'Y')
link-reduced-variant 'grek/Upsilon/sansSerif' 'grek/Upsilon' MathSansSerif (follow -- 'Y/sansSerif') link-reduced-variant 'grek/Upsilon/sansSerif' 'grek/Upsilon' MathSansSerif (follow -- 'Y/sansSerif')
alias 'cyrl/Ue' 0x4AE 'Y' alias 'cyrl/Ue' 0x4AE 'Y'
derive-glyphs 'currency/yenSign' 0xA5 'Y' : lambda [src sel] : glyph-proc derive-glyphs 'currency/yenSign' 0xA5 'Y' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : YOverlayShape include : YOverlayShape

View file

@ -10,38 +10,30 @@ glyph-block Letter-Shared : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-export CreateDottedComposition glyph-block-export CreateAccentedComposition
define [CreateDottedComposition sourceGid dstGid unicode fDontDecompose] define [CreateAccentedComposition dst u srcGid accentGid fDontDecompose]
derive-glyphs dstGid unicode sourceGid derive-multi-part-glyphs dst u { srcGid accentGid } : function [gns gr] : glyph-proc
lambda [src sel] : glyph-proc local { base mark } gns
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph base] AS_BASE ALSO_METRICS
include : refer-glyph "dotAbove" include [refer-glyph mark]
Dotless.set currentGlyph src if (!gr && accentGid === 'dotAbove') : Dotless.set currentGlyph base
if (!fDontDecompose && !sel) : CvDecompose.set currentGlyph { src "dotAbove" }
glyph-block-export CreateCommaCaronComposition glyph-block-export CreateCommaCaronComposition
define [CreateCommaCaronComposition sourceGid dstGid unicode] define [CreateCommaCaronComposition dst u sourceGid]
derive-glyphs dstGid unicode sourceGid derive-multi-part-glyphs dst u { sourceGid 'commaTR' } : function [gns gr] : glyph-proc
lambda [src sel] : glyph-proc local { base comma } gns
define srcGlyph : query-glyph src define baseGlyph : query-glyph base
define commaOffset : (Width / 2) * [Math.pow (srcGlyph.advanceWidth / Width * 2) (2/3)] define commaOffset : (Width / 2) * [Math.pow (baseGlyph.advanceWidth / Width * 2) (2/3)]
include : refer-glyph "commaTR" include : refer-glyph comma
include : ApparentTranslate commaOffset 0 include : ApparentTranslate commaOffset 0
include srcGlyph AS_BASE ALSO_METRICS include [refer-glyph base] AS_BASE ALSO_METRICS
glyph-block-export CreateAccentedComposition
define [CreateAccentedComposition dstGid unicode srcGid accentGid fDontDecompose]
derive-glyphs dstGid unicode srcGid : lambda [src sel] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
include [refer-glyph accentGid]
if (!fDontDecompose && !sel) : CvDecompose.set currentGlyph { src accentGid }
glyph-block-export CreateMultiAccentedComposition glyph-block-export CreateMultiAccentedComposition
define [CreateMultiAccentedComposition dstGid unicode srcGid accentGids fDontDecompose] define [CreateMultiAccentedComposition dstGid unicode srcGid accentGids fDontDecompose]
derive-glyphs dstGid unicode srcGid : lambda [src sel] : glyph-proc derive-glyphs dstGid unicode srcGid : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
foreach accentGid [items-of accentGids] : include [refer-glyph accentGid] foreach accentGid [items-of accentGids] : include [refer-glyph accentGid]
if (!fDontDecompose && !sel) : CvDecompose.set currentGlyph { src ::accentGids } if (!fDontDecompose && !gr) : CvDecompose.set currentGlyph { src :: accentGids }
glyph-block-export CreateRightDependentComposite glyph-block-export CreateRightDependentComposite
define [CreateRightDependentComposite gidDst unicode gidPart1 gidPart2] : begin define [CreateRightDependentComposite gidDst unicode gidPart1 gidPart2] : begin

View file

@ -31,18 +31,22 @@ glyph-block Mark-Above : begin
define asciiMarkZoom : (RightSB - SB) / (markExtend * 3) define asciiMarkZoom : (RightSB - SB) / (markExtend * 3)
### Above marks ### Above marks
create-glyph 'dotAbove' 0x307 : glyph-proc foreach { suffix { DrawAt kdr } } [Object.entries DotVariants] : do
set-width 0 create-glyph "dotAbove.\(suffix)" : glyph-proc
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack set-width 0
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
include : DotAt markMiddle aboveMarkMid DotRadius set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
include : DrawAt markMiddle aboveMarkMid (DotRadius * kdr)
create-glyph 'dieresisAbove' 0x308 : glyph-proc create-glyph "dieresisAbove.\(suffix)" : glyph-proc
set-width 0 set-width 0
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
include : DotAt (markMiddle - markExtend) aboveMarkMid markDotsRadius include : DrawAt (markMiddle - markExtend) aboveMarkMid (markDotsRadius * kdr)
include : DotAt (markMiddle + markExtend) aboveMarkMid markDotsRadius include : DrawAt (markMiddle + markExtend) aboveMarkMid (markDotsRadius * kdr)
select-variant 'dotAbove' 0x307 (follow -- 'diacriticDot')
select-variant 'dieresisAbove' 0x308 (follow -- 'diacriticDot')
define [RingDims] : begin define [RingDims] : begin
local radiusOut : AccentHeight * [linreg 16 0.5 90 0.75 (markHalfStroke * 2)] local radiusOut : AccentHeight * [linreg 16 0.5 90 0.75 (markHalfStroke * 2)]
@ -473,7 +477,7 @@ glyph-block Mark-Above : begin
flat (m2 - markStress) aboveMarkBot [widths markFine markFine] flat (m2 - markStress) aboveMarkBot [widths markFine markFine]
curl (m2 + markExtend) aboveMarkTop [widths markStress markStress] curl (m2 + markExtend) aboveMarkTop [widths markStress markStress]
create-glyph 'commaAbove' 0x313 : glyph-proc create-glyph 'commaAbove.round' : glyph-proc
set-width 0 set-width 0
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -487,34 +491,36 @@ glyph-block Mark-Above : begin
g4 [mix markMiddle (markMiddle - radius) 0.2] (aboveMarkBot - radius - commaOvershoot2) g4 [mix markMiddle (markMiddle - radius) 0.2] (aboveMarkBot - radius - commaOvershoot2)
include : ApparentTranslate 0 (DotRadius * 0.3) include : ApparentTranslate 0 (DotRadius * 0.3)
create-glyph 'commaAboveSquare' : glyph-proc create-glyph 'commaAbove.square' : glyph-proc
set-width 0 set-width 0
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
local radius commaAboveRadius local radius : commaAboveRadius * DesignParameters.squareDotScalar
include : Rect aboveMarkTop (aboveMarkTop - radius * 2) (markMiddle - radius) (markMiddle + radius) include : Rect aboveMarkTop (aboveMarkTop - radius * 2) (markMiddle - radius) (markMiddle + radius)
include : dispiro include : dispiro
widths.rhs : Math.min radius (markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)]) widths.rhs : Math.min radius (markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)])
flat (markMiddle + radius) aboveMarkTop flat (markMiddle + radius) aboveMarkTop [heading Downward]
curl (markMiddle + radius) (aboveMarkTop - radius) curl (markMiddle + radius) (aboveMarkTop - 2 * radius) [heading Downward]
quadControls 0 0.6 quadControls 0 0.6
g4 [mix markMiddle (markMiddle - radius) 0.2] (aboveMarkBot - radius - commaOvershoot2) g4 [mix markMiddle (markMiddle - radius) 0.2] (aboveMarkBot - radius - commaOvershoot2)
include : ApparentTranslate 0 (DotRadius * 0.3) include : ApparentTranslate 0 (DotRadius * 0.3)
create-glyph 'commaGrekUpperTonos' : glyph-proc select-variant 'commaAbove' 0x313 (follow -- 'diacriticDot')
derive-glyphs 'commaGrekUpperTonos' null 'commaAbove' : function [src gr] : glyph-proc
set-width 0 set-width 0
include : refer-glyph 'commaAbove' include : refer-glyph src
set-mark-anchor 'grekUpperTonos' markMiddle XH set-mark-anchor 'grekUpperTonos' markMiddle XH
create-glyph 'turnCommaAbove' 0x312 : glyph-proc derive-glyphs 'turnCommaAbove' 0x312 'commaAbove' : function [src gr] : glyph-proc
set-width 0 set-width 0
include : refer-glyph "commaAbove" include : refer-glyph src
include : FlipAround markMiddle ([mix aboveMarkTop (aboveMarkBot - commaAboveRadius) 0.5] + (DotRadius * 0.3) + commaOvershoot / 2) include : FlipAround markMiddle ([mix aboveMarkTop (aboveMarkBot - commaAboveRadius) 0.5] + (DotRadius * 0.3) + commaOvershoot / 2)
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
create-glyph 'revCommaAbove' 0x314 : glyph-proc create-glyph 'revCommaAbove.round' : glyph-proc
set-width 0 set-width 0
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
@ -528,9 +534,27 @@ glyph-block Mark-Above : begin
g4 [mix markMiddle (markMiddle + radius) 0.2] (aboveMarkBot - radius - commaOvershoot2) g4 [mix markMiddle (markMiddle + radius) 0.2] (aboveMarkBot - radius - commaOvershoot2)
include : ApparentTranslate 0 (DotRadius * 0.3) include : ApparentTranslate 0 (DotRadius * 0.3)
create-glyph 'revCommaGrekUpperTonos' : glyph-proc create-glyph 'revCommaAbove.square' : glyph-proc
set-width 0 set-width 0
include : refer-glyph 'revCommaAbove' set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
local radius : commaAboveRadius * DesignParameters.squareDotScalar
include : Rect (aboveMarkTop + commaOvershoot) (aboveMarkTop - radius * 2 + commaOvershoot) (markMiddle - radius) (markMiddle + radius)
include : dispiro
widths.lhs : Math.min radius (markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)])
flat (markMiddle - radius) aboveMarkTop [heading Downward]
curl (markMiddle - radius) (aboveMarkTop - 2 * radius) [heading Downward]
quadControls 0 0.6
g4 [mix markMiddle (markMiddle + radius) 0.2] (aboveMarkBot - radius - commaOvershoot2)
include : ApparentTranslate 0 (DotRadius * 0.3)
select-variant 'revCommaAbove' 0x314 (follow -- 'diacriticDot')
derive-glyphs 'revCommaGrekUpperTonos' null 'revCommaAbove' : function [src gr] : glyph-proc
set-width 0
include : refer-glyph src
set-mark-anchor 'grekUpperTonos' markMiddle XH set-mark-anchor 'grekUpperTonos' markMiddle XH
create-glyph 'barAbove' 0x30D : glyph-proc create-glyph 'barAbove' 0x30D : glyph-proc

View file

@ -184,9 +184,9 @@ glyph-block Mark-Below : begin
# Turned below marks # Turned below marks
define [TurnAboveMarkToBelow gnBelowMark unicodeBelowMark gnAboveMark] : begin define [TurnAboveMarkToBelow gnBelowMark unicodeBelowMark gnAboveMark] : begin
create-glyph gnBelowMark unicodeBelowMark : glyph-proc derive-glyphs gnBelowMark unicodeBelowMark gnAboveMark : function [src gr] : glyph-proc
set-width 0 set-width 0
include : refer-glyph gnAboveMark include : refer-glyph src
include : FlipAround markMiddle (XH / 2) include : FlipAround markMiddle (XH / 2)
local aboveGlyph : query-glyph gnAboveMark local aboveGlyph : query-glyph gnAboveMark
if aboveGlyph : begin if aboveGlyph : begin

View file

@ -19,32 +19,33 @@ glyph-block Mark-Composite : begin
glyph-block-import Mark-Above : commaOvershoot commaAboveRadius glyph-block-import Mark-Above : commaOvershoot commaAboveRadius
glyph-block-import Mark-Below : belowMarkBot belowMarkTop belowMarkMid glyph-block-import Mark-Below : belowMarkBot belowMarkTop belowMarkMid
define [GreekLRDoubleMark id unicode leftGlyph rightGlyph] : begin define [GreekLRDoubleMark id unicode gnLeft gnRight] : begin
local k : -Width * 0.15 local k : -Width * 0.15
create-glyph id : glyph-proc derive-multi-part-glyphs id null { gnLeft gnRight } : function [srcs gr] : glyph-proc
local { leftPart rightPart } srcs
set-width 0 set-width 0
include leftGlyph include : refer-glyph leftPart
include : Translate (2 * k) 0 include : Translate (2 * k) 0
include rightGlyph include : refer-glyph rightPart
include : Translate (0 - k) 0 include : Translate (0 - k) 0
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkStack
create-glyph "\(id)GrekUpperTonos" : glyph-proc derive-glyphs "\(id)GrekUpperTonos" null id : function [src gr] : glyph-proc
set-width 0 set-width 0
include [refer-glyph id] include [refer-glyph src]
set-mark-anchor 'grekUpperTonos' (markMiddle - k) XH set-mark-anchor 'grekUpperTonos' (markMiddle - k) XH
if unicode : create-glyph ('spaced' + id) unicode : glyph-proc if unicode : derive-glyphs ('spaced' + id) unicode id : function [src gr] : glyph-proc
include [refer-glyph 'markBaseSpace'] AS_BASE include [refer-glyph 'markBaseSpace'] AS_BASE
set-width [query-glyph 'markBaseSpace'].advanceWidth set-width [query-glyph 'markBaseSpace'].advanceWidth
include [refer-glyph id] include [refer-glyph src]
GreekLRDoubleMark 'psiliVaria' 0x1FCD [refer-glyph 'commaAbove'] [refer-glyph 'variaAbove'] GreekLRDoubleMark 'psiliVaria' 0x1FCD 'commaAbove' 'variaAbove'
GreekLRDoubleMark 'psiliOxia' 0x1FCE [refer-glyph 'commaAbove'] [refer-glyph 'oxiaAbove'] GreekLRDoubleMark 'psiliOxia' 0x1FCE 'commaAbove' 'oxiaAbove'
GreekLRDoubleMark 'dasiaVaria' 0x1FDD [refer-glyph 'revCommaAbove'] [refer-glyph 'variaAbove'] GreekLRDoubleMark 'dasiaVaria' 0x1FDD 'revCommaAbove' 'variaAbove'
GreekLRDoubleMark 'dasiaOxia' 0x1FDE [refer-glyph 'revCommaAbove'] [refer-glyph 'oxiaAbove'] GreekLRDoubleMark 'dasiaOxia' 0x1FDE 'revCommaAbove' 'oxiaAbove'
local yc : aboveMarkTop - commaAboveRadius + DotRadius * 0.3 + commaOvershoot local yc : aboveMarkTop - commaAboveRadius + DotRadius * 0.3 + commaOvershoot

View file

@ -55,31 +55,58 @@ glyph-block Mark-Horn-And-Angle : begin
widths.rhs [mix hornFine hornStroke t] widths.rhs [mix hornFine hornStroke t]
g4 (attX - overshootX - HalfStroke * HVContrast) (attY - overshootY - Stroke) [widths.rhs hornStroke] g4 (attX - overshootX - HalfStroke * HVContrast) (attY - overshootY - Stroke) [widths.rhs hornStroke]
create-glyph 'horn' 0x31B : glyph-proc define [SquareHornShape attX attY overshootX overshootY yrP] : glyph-proc
local [object [radius r] hornFine hornStroke startX startY] : HornDim attX attY overshootX overshootY yrP
local radius : r * DesignParameters.squareDotScalar
include : union
SquareAt (startX - radius) startY radius
dispiro
flat startX (startY + radius) [widths.rhs.heading hornFine Downward]
curl startX (startY - radius)
quadControls 0 0.8 8 : object : blend : lambda [t]
widths.rhs [mix hornFine hornStroke t]
g4 (attX - overshootX - HalfStroke * HVContrast) (attY - overshootY - Stroke) [widths.rhs hornStroke]
create-glyph 'horn.round' : glyph-proc
set-width 0 set-width 0
include : HornShape 0 XH 0 0 0.5 include : HornShape 0 XH 0 0 0.5
include : HornMarkAnchor 0 XH 0 0 0.5 include : HornMarkAnchor 0 XH 0 0 0.5
create-glyph 'longHorn' : glyph-proc create-glyph 'horn.square' : glyph-proc
set-width 0
include : SquareHornShape 0 XH 0 0 0.5
include : HornMarkAnchor 0 XH 0 0 0.5
select-variant 'horn' 0x31B (follow -- 'diacriticDot')
create-glyph 'longHorn.round' : glyph-proc
set-width 0 set-width 0
include : HornShape 0 XH (Width / 2) (SmoothB) 0.5 include : HornShape 0 XH (Width / 2) (SmoothB) 0.5
include : HornMarkAnchor 0 XH (Width / 2) (SmoothB) 0.5 include : HornMarkAnchor 0 XH (Width / 2) (SmoothB) 0.5
create-glyph 'longHorn.square' : glyph-proc
set-width 0
include : SquareHornShape 0 XH (Width / 2) (SmoothB) 0.5
include : HornMarkAnchor 0 XH (Width / 2) (SmoothB) 0.5
select-variant 'longHorn' null (follow -- 'diacriticDot')
create-glyph 'leftangleTR' 0x31A : glyph-proc create-glyph 'leftangleTR' 0x31A : glyph-proc
set-width 0 set-width 0
include : VBarLeft 0 aboveMarkBot aboveMarkTop (markFine * 2) include : VBarLeft 0 aboveMarkBot aboveMarkTop (markFine * 2)
include : HBarTop (-markExtend * 1.5) 0 aboveMarkTop (markFine * 2) include : HBarTop (-markExtend * 1.5) 0 aboveMarkTop (markFine * 2)
set-mark-anchor 'topright' 0 XH 0 aboveMarkTop set-mark-anchor 'topright' 0 XH 0 aboveMarkTop
create-glyph 'dotTR' 0x358 : glyph-proc derive-glyphs 'dotTR' 0x358 'dotAbove' : function [src gr] : glyph-proc
set-width 0 set-width 0
include : refer-glyph "dotAbove" include : refer-glyph src
include : ApparentTranslate (RightSB - Middle + DotRadius) 0 include : ApparentTranslate (RightSB - Middle + DotRadius) 0
set-mark-anchor 'topright' 0 XH 0 aboveMarkTop set-mark-anchor 'topright' 0 XH 0 aboveMarkTop
create-glyph 'commaTR' 0x315 : glyph-proc derive-glyphs 'commaTR' 0x315 'commaAbove' : function [src gr] : glyph-proc
set-width 0 set-width 0
include : refer-glyph "commaAbove" include : refer-glyph src
include : ApparentTranslate (RightSB - Middle + DotRadius) 0 include : ApparentTranslate (RightSB - Middle + DotRadius) 0
set-mark-anchor 'topright' 0 XH 0 aboveMarkTop set-mark-anchor 'topright' 0 XH 0 aboveMarkTop

View file

@ -177,7 +177,7 @@ glyph-block Symbol-Ligation : begin
Joining.set currentGlyph Joining.Classes.Mid Joining.set currentGlyph Joining.Classes.Mid
include : Translate (+arrowheadsKern) 0 include : Translate (+arrowheadsKern) 0
derive-glyphs 'exclam.lig.htmlcommentstart' null 'exclam' : function [src sel] : glyph-proc derive-glyphs 'exclam.lig.htmlcommentstart' null 'exclam' : function [src gr] : glyph-proc
Joining.set currentGlyph Joining.Classes.Mid Joining.set currentGlyph Joining.Classes.Mid
include : refer-glyph src include : refer-glyph src
include : Translate (((RightSB - Width) + (Width - arrowExtend / 2)) / 2 - Middle) 0 include : Translate (((RightSB - Width) + (Width - arrowExtend / 2)) / 2 - Middle) 0

View file

@ -155,13 +155,13 @@ glyph-block Symbol-Math-APL : begin
create-glyph 0x235E : aplBoxed : refer-glyph 'asciiSingleQuote.straight' create-glyph 0x235E : aplBoxed : refer-glyph 'asciiSingleQuote.straight'
create-glyph 0x236F : aplBoxed : refer-glyph 'notequal' create-glyph 0x236F : aplBoxed : refer-glyph 'notequal'
derive-glyphs 'apl/boxedDivide' 0x2339 'divide' : function [src sel] : aplBoxed : refer-glyph src derive-glyphs 'apl/boxedDivide' 0x2339 'divide' : function [src gr] : aplBoxed : refer-glyph src
derive-glyphs 'apl/boxedColon' 0x2360 'colon/mid' : function [src sel] : aplBoxed : refer-glyph src derive-glyphs 'apl/boxedColon' 0x2360 'colon/mid' : function [src gr] : aplBoxed : refer-glyph src
derive-glyphs 'apl/quadQuestion/hookPart' null 'question/hookPart' : function [src sel] : glyph-proc derive-glyphs 'apl/quadQuestion/hookPart' null 'question/hookPart' : function [src gr] : glyph-proc
include : aplBoxed : refer-glyph src include : aplBoxed : refer-glyph src
set-base-anchor 'cvDecompose' 0 0 set-base-anchor 'cvDecompose' 0 0
derive-glyphs 'apl/quadQuestion/dotPart' null 'question/dotPart' : function [src sel] : glyph-proc derive-glyphs 'apl/quadQuestion/dotPart' null 'question/dotPart' : function [src gr] : glyph-proc
set-width 0 set-width 0
include : aplBoxedPhantom : WithTransform [Translate Width 0] : refer-glyph src include : aplBoxedPhantom : WithTransform [Translate Width 0] : refer-glyph src
set-mark-anchor 'cvDecompose' 0 0 set-mark-anchor 'cvDecompose' 0 0
@ -184,22 +184,26 @@ glyph-block Symbol-Math-APL : begin
derive-composites 'apl/barComma' 0x236A 'comma' 'minus' derive-composites 'apl/barComma' 0x236A 'comma' 'minus'
derive-composites 'apl/zeroTilde' 0x236C 'zero.lnum/forceUnslashed' 'overlayTildeOperator' derive-composites 'apl/zeroTilde' 0x236C 'zero.lnum/forceUnslashed' 'overlayTildeOperator'
# Dieresis # Dieresis & underscore
create-glyph 0x2362 : composite-proc [refer-glyph 'nabla.aplForm'] [MarkSet.tack] [refer-glyph 'dieresisAbove'] [clear-anchors] define [AplAccented u part1 part2 marks]
create-glyph 0x2361 : composite-proc [refer-glyph 'top'] [MarkSet.tack] [refer-glyph 'dieresisAbove'] [clear-anchors] derive-multi-part-glyphs [NameUni u] u {part1 part2} : function [srcs gr] : composite-proc
create-glyph 0x2363 : composite-proc [refer-glyph 'asterisk.pentaSMid'] [MarkSet.plus] [refer-glyph 'dieresisAbove'] [clear-anchors] refer-glyph srcs.0
create-glyph 0x2364 : composite-proc [refer-glyph 'whiteSmallCircle.NWID'] [MarkSet.plus] [refer-glyph 'dieresisAbove'] [clear-anchors] begin marks
create-glyph 0x2365 : composite-proc [refer-glyph 'whiteCircle.NWID'] [MarkSet.plus] [refer-glyph 'dieresisAbove'] [clear-anchors] refer-glyph srcs.1
create-glyph 0x2368 : composite-proc [refer-glyph 'asciiTilde.low'] [refer-glyph 'dieresisAbove'] clear-anchors
create-glyph 0x2369 : composite-proc [refer-glyph 'greater.narrow'] [MarkSet.plus] [refer-glyph 'dieresisAbove'] [clear-anchors] AplAccented 0x2362 'nabla.aplForm' 'dieresisAbove' [MarkSet.tack]
AplAccented 0x2361 'top' 'dieresisAbove' [MarkSet.tack]
# Underscore AplAccented 0x2363 'asterisk.pentaSMid' 'dieresisAbove' [MarkSet.plus]
create-glyph 0x234A : composite-proc [refer-glyph 'bot'] [MarkSet.tack] [refer-glyph 'underlineBelow'] [clear-anchors] AplAccented 0x2364 'whiteSmallCircle.NWID' 'dieresisAbove' [MarkSet.plus]
create-glyph 0x2358 : composite-proc [refer-glyph 'asciiSingleQuote.straight'] [MarkSet.plus] [refer-glyph 'underlineBelow'] [clear-anchors] AplAccented 0x2365 'whiteCircle.NWID' 'dieresisAbove' [MarkSet.plus]
create-glyph 0x235A : composite-proc [refer-glyph 'whiteDiamond.NWID'] [MarkSet.plus] [refer-glyph 'underlineBelow'] [clear-anchors] AplAccented 0x2368 'asciiTilde.low' 'dieresisAbove' [MarkSet.plus]
create-glyph 0x235B : composite-proc [refer-glyph 'whiteSmallCircle.NWID'] [MarkSet.plus] [refer-glyph 'underlineBelow'] [clear-anchors] AplAccented 0x2369 'greater.narrow' 'dieresisAbove' [MarkSet.plus]
create-glyph 0x235C : composite-proc [refer-glyph 'whiteCircle.NWID'] [MarkSet.plus] [refer-glyph 'underlineBelow'] [clear-anchors] AplAccented 0x234A 'bot' 'underlineBelow' [MarkSet.tack]
create-glyph 0x2377 : composite-proc [refer-glyph 'smallElement'] [MarkSet.plus] [refer-glyph 'underlineBelow'] [clear-anchors] AplAccented 0x2358 'asciiSingleQuote.straight' 'underlineBelow' [MarkSet.plus]
AplAccented 0x235A 'whiteDiamond.NWID' 'underlineBelow' [MarkSet.plus]
AplAccented 0x235B 'whiteSmallCircle.NWID' 'underlineBelow' [MarkSet.plus]
AplAccented 0x235C 'whiteCircle.NWID' '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]
@ -213,7 +217,7 @@ glyph-block Symbol-Math-APL : begin
create-glyph 0x2346 : composite-proc : Overlay [refer-glyph 'arrowRight.NWID'] [refer-glyph 'apl/bar'] create-glyph 0x2346 : composite-proc : Overlay [refer-glyph 'arrowRight.NWID'] [refer-glyph 'apl/bar']
create-glyph 0x235F : composite-proc [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'opAsterisk.low']] [refer-glyph 'mathO'] create-glyph 0x235F : composite-proc [intersection [refer-glyph 'mathOOutline'] [refer-glyph 'opAsterisk.low']] [refer-glyph 'mathO']
derive-glyphs 'apl/barSemicolon' 0x236E 'semicolon' : function [src sel] : Overlay [refer-glyph src] [refer-glyph 'underscore.high'] derive-glyphs 'apl/barSemicolon' 0x236E 'semicolon' : function [src gr] : Overlay [refer-glyph src] [refer-glyph 'underscore.high']
# Complex Composition # Complex Composition
create-glyph 0x2367 : composite-proc [refer-glyph 'apl/bar'] : union create-glyph 0x2367 : composite-proc [refer-glyph 'apl/bar'] : union

View file

@ -9,7 +9,7 @@ glyph-block Symbol-Math-Boxed : begin
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
define [MakeMathBoxed u inner] : begin define [MakeMathBoxed u inner] : begin
derive-glyphs "mathBoxed{\(inner)}" u inner : function [src sel] derive-glyphs "mathBoxed{\(inner)}" u inner : function [src gr]
composite-proc composite-proc
refer-glyph 'mathBox' refer-glyph 'mathBox'
intersection [refer-glyph 'mathBoxOutline'] [refer-glyph src] intersection [refer-glyph 'mathBoxOutline'] [refer-glyph src]

View file

@ -9,7 +9,7 @@ glyph-block Symbol-Math-Circled : begin
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
define [MakeMathCircled u inner] : begin define [MakeMathCircled u inner] : begin
derive-glyphs "mathCircled{\(inner)}" u inner : function [src sel] derive-glyphs "mathCircled{\(inner)}" u inner : function [src gr]
composite-proc composite-proc
refer-glyph 'mathO' refer-glyph 'mathO'
intersection [refer-glyph 'mathOOutline'] [refer-glyph src] intersection [refer-glyph 'mathOOutline'] [refer-glyph src]
@ -24,7 +24,7 @@ glyph-block Symbol-Math-Circled : begin
for-width-kinds WideWidth1 for-width-kinds WideWidth1
define [MakeMathBigCircled u inner] : begin define [MakeMathBigCircled u inner] : begin
derive-glyphs [MangleName "mathBigCircled{\(inner)}"] [MangleUnicode u] [MangleName inner] : function [src sel] : composite-proc derive-glyphs [MangleName "mathBigCircled{\(inner)}"] [MangleUnicode u] [MangleName inner] : function [src gr] : composite-proc
refer-glyph : MangleName 'mathOBig' refer-glyph : MangleName 'mathOBig'
intersection intersection
refer-glyph : MangleName 'mathOOutlineBig' refer-glyph : MangleName 'mathOOutlineBig'

View file

@ -36,18 +36,18 @@ glyph-block Symbol-Punctuation-Ligation-Variants : begin
define [LigD baseName suffix pDelta] : if [glyph-is-needed baseName] : begin define [LigD baseName suffix pDelta] : if [glyph-is-needed baseName] : begin
local delta : Math.max 0 : Width / 2 - (XH - PeriodSize) / 2 local delta : Math.max 0 : Width / 2 - (XH - PeriodSize) / 2
derive-glyphs (baseName + '.lig.' + suffix) null baseName : function [src sel] derive-glyphs (baseName + '.lig.' + suffix) null baseName : function [src gr]
composite-proc composite-proc
refer-glyph src refer-glyph src
Translate (delta * pDelta ) 0 Translate (delta * pDelta ) 0
define [LigDTwoParts baseName aPart bPart suffix pDelta] : if [glyph-is-needed baseName] : begin define [LigDTwoParts baseName aPart bPart suffix pDelta] : if [glyph-is-needed baseName] : begin
local delta : Math.max 0 : Width / 2 - (XH - PeriodSize) / 2 local delta : Math.max 0 : Width / 2 - (XH - PeriodSize) / 2
derive-glyphs (aPart + '.lig.' + suffix) null aPart : function [src sel] : glyph-proc derive-glyphs (aPart + '.lig.' + suffix) null aPart : function [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : Translate (delta * pDelta ) 0 include : Translate (delta * pDelta ) 0
set-base-anchor 'cvDecompose' 0 0 set-base-anchor 'cvDecompose' 0 0
derive-glyphs (bPart + '.lig.' + suffix) null bPart : function [src sel] : glyph-proc derive-glyphs (bPart + '.lig.' + suffix) null bPart : function [src gr] : glyph-proc
set-width 0 set-width 0
include [refer-glyph src] AS_BASE include [refer-glyph src] AS_BASE
include : Translate (delta * pDelta ) 0 include : Translate (delta * pDelta ) 0

View file

@ -17,31 +17,31 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
local commaLow (Descender * 0.9) local commaLow (Descender * 0.9)
local ratio : Math.min 1 : (quoteTop - quoteBottom) / (PeriodSize - commaLow) local ratio : Math.min 1 : (quoteTop - quoteBottom) / (PeriodSize - commaLow)
derive-glyphs 'lowSingleQuote' 0x201A 'comma' : function [src sel] : glyph-proc derive-glyphs 'lowSingleQuote' 0x201A 'comma' : function [src gr] : glyph-proc
local df : DivFrame para.diversityF local df : DivFrame para.diversityF
set-width df.width set-width df.width
include : refer-glyph src include : refer-glyph src
include : FlipAround df.middle 0 ratio ratio include : FlipAround df.middle 0 ratio ratio
derive-glyphs 'revLowSingleQuote' null 'revComma' : function [src sel] : glyph-proc derive-glyphs 'revLowSingleQuote' null 'revComma' : function [src gr] : glyph-proc
local df : DivFrame para.diversityF local df : DivFrame para.diversityF
set-width df.width set-width df.width
include : refer-glyph src include : refer-glyph src
include : FlipAround df.middle 0 ratio ratio include : FlipAround df.middle 0 ratio ratio
derive-glyphs 'openSingleQuote' 0x2018 'lowSingleQuote' : function [src sel] : glyph-proc derive-glyphs 'openSingleQuote' 0x2018 'lowSingleQuote' : function [src gr] : glyph-proc
local df : DivFrame para.diversityF local df : DivFrame para.diversityF
set-width df.width set-width df.width
include : refer-glyph src include : refer-glyph src
include : FlipAround df.middle [mix [mix PeriodSize commaLow 0.5] yCurlyQuotes 0.5] include : FlipAround df.middle [mix [mix PeriodSize commaLow 0.5] yCurlyQuotes 0.5]
derive-glyphs 'closeSingleQuote' 0x2019 'openSingleQuote' : function [src sel] : glyph-proc derive-glyphs 'closeSingleQuote' 0x2019 'openSingleQuote' : function [src gr] : glyph-proc
local df : DivFrame para.diversityF local df : DivFrame para.diversityF
set-width df.width set-width df.width
include : refer-glyph src include : refer-glyph src
include : FlipAround df.middle yCurlyQuotes include : FlipAround df.middle yCurlyQuotes
derive-glyphs 'revSingleQuote' 0x201B 'revComma' : function [src sel] : glyph-proc derive-glyphs 'revSingleQuote' 0x201B 'revComma' : function [src gr] : glyph-proc
local df : DivFrame para.diversityF local df : DivFrame para.diversityF
set-width df.width set-width df.width
include : refer-glyph src include : refer-glyph src

View file

@ -131,7 +131,7 @@ define-macro glyph-block-import : syntax-rules
Common-Derivatives `[select-variant orthographic-italic orthographic-slanted Common-Derivatives `[select-variant orthographic-italic orthographic-slanted
refer-glyph query-glyph alias turned HDual HCombine VDual VCombine derive-glyphs refer-glyph query-glyph alias turned HDual HCombine VDual VCombine derive-glyphs
derive-composites link-reduced-variant alias-reduced-variant glyph-is-needed derive-composites link-reduced-variant alias-reduced-variant glyph-is-needed
HalfAdvance TurnMarks create-two-part-glyph] HalfAdvance TurnMarks create-two-part-glyph derive-multi-part-glyphs DeriveMeshT]
CommonShapes `[Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CommonShapes `[Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt
CircleRing CircleRingAt CircleDotAt OShapeT OShape OShapeOutline OShapeFlatTB CircleRing CircleRingAt CircleDotAt OShapeT OShape OShapeOutline OShapeFlatTB

View file

@ -72,29 +72,23 @@ const AplForm = OtlTaggedProp("AplForm", "APLF");
const NumeratorForm = OtlTaggedProp("Numerator", "numr"); const NumeratorForm = OtlTaggedProp("Numerator", "numr");
const DenominatorForm = OtlTaggedProp("Denominator", "dnom"); const DenominatorForm = OtlTaggedProp("Denominator", "dnom");
const CvDecompose = { function DecompositionProp(key) {
get(glyph) { return {
if (glyph && glyph.related) return glyph.related.CvDecompose; get(glyph) {
else return null; if (glyph && glyph.related) return glyph.related[key];
}, else return null;
set(glyph, composition) { },
if (!Array.isArray(composition)) throw new Error("Must supply a GID array"); set(glyph, composition) {
if (!glyph.related) glyph.related = {}; if (!Array.isArray(composition)) throw new Error("Must supply a GID array");
glyph.related.CvDecompose = composition; if (!glyph.related) glyph.related = {};
} glyph.related[key] = composition;
}; }
};
}
const CcmpDecompose = { const CvDecompose = DecompositionProp("CvDecompose");
get(glyph) { const PseudoCvDecompose = DecompositionProp("PseudoCvDecompose");
if (glyph && glyph.related) return glyph.related.CcmpDecompose; const CcmpDecompose = DecompositionProp("CcmpDecompose");
else return null;
},
set(glyph, composition) {
if (!Array.isArray(composition)) throw new Error("Must supply a GID array");
if (!glyph.related) glyph.related = {};
glyph.related.CcmpDecompose = composition;
}
};
const TieMark = { const TieMark = {
tag: "TMRK", tag: "TMRK",
@ -221,7 +215,6 @@ function Cv(tag, rank) {
} }
const DotlessOrNot = { const DotlessOrNot = {
optional: true,
query(glyph) { query(glyph) {
if (Dotless.get(glyph)) return [Dotless]; if (Dotless.get(glyph)) return [Dotless];
return null; return null;
@ -229,7 +222,6 @@ const DotlessOrNot = {
}; };
const AnyCv = { const AnyCv = {
optional: false,
query(glyph) { query(glyph) {
let ret = []; let ret = [];
if (glyph && glyph.related && glyph.related.cv) { if (glyph && glyph.related && glyph.related.cv) {
@ -245,7 +237,6 @@ const AnyCv = {
}; };
const AnyDerivingCv = { const AnyDerivingCv = {
optional: false,
query(glyph) { query(glyph) {
let ret = []; let ret = [];
if (glyph && glyph.related && glyph.related.cv) { if (glyph && glyph.related && glyph.related.cv) {
@ -275,17 +266,14 @@ function getGrTreeImpl(gid, grSetList, fnGidToGlyph, sink) {
if (!grSetList.length) return; if (!grSetList.length) return;
const g = fnGidToGlyph(gid); const g = fnGidToGlyph(gid);
if (!g) return; if (!g) return;
const grq = grSetList[0];
const grs = grq.query(g); const grs = grSetList[0].query(g);
if ((!grs || !grs.length) && grq.optional) {
getGrTreeImpl(gid, grSetList.slice(1), fnGidToGlyph, sink); getGrTreeImpl(gid, grSetList.slice(1), fnGidToGlyph, sink);
} else if (grs && grs.length) { if (grs && grs.length) {
if (grq.optional) {
getGrTreeImpl(gid, grSetList.slice(1), fnGidToGlyph, sink);
}
for (const gr of grs) { for (const gr of grs) {
sink.push([gr, gid, gr.get(g)]); sink.push([gr, gid, gr.get(g)]);
getGrTreeImpl(gr.get(g), grSetList.slice(1), fnGidToGlyph, sink); getGrTreeImpl(gr.get(g), grSetList, fnGidToGlyph, sink);
} }
} }
} }
@ -369,7 +357,7 @@ function createGrDisplaySheet(glyphStore, gid) {
displayQuerySingleFeature(glyphStore, gid, AplForm, typographicFeatures); displayQuerySingleFeature(glyphStore, gid, AplForm, typographicFeatures);
let charVariantFeatures = []; let charVariantFeatures = [];
const decomposition = CvDecompose.get(glyph); const decomposition = CvDecompose.get(glyph) || PseudoCvDecompose.get(glyph);
if (decomposition) { if (decomposition) {
const variantAssignmentSet = new Set(); const variantAssignmentSet = new Set();
for (const componentGn of decomposition) { for (const componentGn of decomposition) {
@ -484,6 +472,7 @@ exports.Joining = Joining;
exports.AnyDerivingCv = AnyDerivingCv; exports.AnyDerivingCv = AnyDerivingCv;
exports.CcmpDecompose = CcmpDecompose; exports.CcmpDecompose = CcmpDecompose;
exports.CvDecompose = CvDecompose; exports.CvDecompose = CvDecompose;
exports.PseudoCvDecompose = PseudoCvDecompose;
exports.RightDependentLink = RightDependentLink; exports.RightDependentLink = RightDependentLink;
exports.RightDependentTrigger = RightDependentTrigger; exports.RightDependentTrigger = RightDependentTrigger;
exports.MathSansSerif = MathSansSerif; exports.MathSansSerif = MathSansSerif;

View file

@ -6529,6 +6529,24 @@ selector.punctuationDot = "square"
[prime.diacritic-dot]
sampler = "öẋ ij"
hotChars = "ijäöü"
samplerExplain = "Dot and Comma shape in diacritics"
tag = "VXDD"
[prime.diacritic-dot.variants.round]
rank = 1
description = "Dots and Commas in diacritics are round"
selector.diacriticDot = "round"
[prime.diacritic-dot.variants.square]
rank = 2
description = "Dots and Commas in diacritics are square"
selector.diacriticDot = "square"
# This is a special variant selector that controls digit form # This is a special variant selector that controls digit form
[prime.digit-form] [prime.digit-form]
isSpecial = true isSpecial = true
@ -6659,6 +6677,7 @@ ascii-single-quote = "straight"
ascii-grave = "straight" ascii-grave = "straight"
question = "smooth" question = "smooth"
punctuation-dot = "round" punctuation-dot = "round"
diacritic-dot = "round"
# m, n, h has tailed variant, but not very ideal # m, n, h has tailed variant, but not very ideal
# Do not make them default # Do not make them default
@ -6868,6 +6887,7 @@ brace = "straight"
at = "fourfold" at = "fourfold"
percent = "rings-continuous-slash" percent = "rings-continuous-slash"
punctuation-dot = "square" punctuation-dot = "square"
diacritic-dot = "square"
[composite.ss02.slab-override.design] [composite.ss02.slab-override.design]
capital-k = "straight-serifed" capital-k = "straight-serifed"
@ -6985,6 +7005,7 @@ ampersand = "upper-open"
percent = "rings-continuous-slash" percent = "rings-continuous-slash"
bar = "force-upright" bar = "force-upright"
punctuation-dot = "square" punctuation-dot = "square"
diacritic-dot = "square"
[composite.ss04.slab-override.design] [composite.ss04.slab-override.design]
capital-d = "more-rounded-bilateral-serifed" capital-d = "more-rounded-bilateral-serifed"
@ -7090,6 +7111,7 @@ at = "fourfold"
percent = "rings-continuous-slash" percent = "rings-continuous-slash"
bar = "force-upright" bar = "force-upright"
punctuation-dot = "square" punctuation-dot = "square"
diacritic-dot = "square"
[composite.ss06.slab-override.design] [composite.ss06.slab-override.design]
capital-d = "more-rounded-bilateral-serifed" capital-d = "more-rounded-bilateral-serifed"
@ -7437,6 +7459,7 @@ pilcrow = "low"
number-sign = "slanted" number-sign = "slanted"
percent = "rings-continuous-slash" percent = "rings-continuous-slash"
punctuation-dot = "square" punctuation-dot = "square"
diacritic-dot = "square"
[composite.ss13.slab-override.design] [composite.ss13.slab-override.design]
capital-d = "more-rounded-bilateral-serifed" capital-d = "more-rounded-bilateral-serifed"
@ -7692,6 +7715,7 @@ at = "fourfold"
dollar = "interrupted" dollar = "interrupted"
cent = "bar-interrupted" cent = "bar-interrupted"
punctuation-dot = "square" punctuation-dot = "square"
diacritic-dot = "square"
brace = "curly-flat-boundary" brace = "curly-flat-boundary"
[composite.ss17.italic] [composite.ss17.italic]