* Add Characters

- MODIFIER LETTER YIN DEPARTING TONE MARK (`U+02EA`);
  - MODIFIER LETTER YANG DEPARTING TONE MARK (`U+02EB`);
  - MODIFIER LETTER DOUBLE APOSTROPHE (`U+02EE`);
  - MODIFIER LETTER MIDDLE GRAVE ACCENT (`U+02F4`);
  - MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT (`U+02F5`);
  - MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT (`U+02F6`);
  - MODIFIER LETTER RAISED COLON (`U+02F8`);
  - MODIFIER LETTER BEGIN HIGH TONE (`U+02F9`);
  - MODIFIER LETTER END HIGH TONE (`U+02FA`);
  - MODIFIER LETTER BEGIN LOW TONE (`U+02FB`);
  - MODIFIER LETTER END LOW TONE (`U+02FC`);
  - MODIFIER LETTER SHELF (`U+02FD`);
  - MODIFIER LETTER OPEN SHELF (`U+02FE`);
  - MODIFIER LETTER LOW LEFT ARROW (`U+02FF`);
  - COMBINING LEFT ARROW BELOW (`U+20EE`);
  - COMBINING RIGHT ARROW BELOW (`U+20EF`);
This commit is contained in:
be5invis 2022-03-24 22:46:19 -07:00
parent eabfd4b59e
commit 0c2d989b76
9 changed files with 101 additions and 13 deletions

17
changes/15.1.0.md Normal file
View file

@ -0,0 +1,17 @@
* Add Characters
- MODIFIER LETTER YIN DEPARTING TONE MARK (`U+02EA`);
- MODIFIER LETTER YANG DEPARTING TONE MARK (`U+02EB`);
- MODIFIER LETTER DOUBLE APOSTROPHE (`U+02EE`);
- MODIFIER LETTER MIDDLE GRAVE ACCENT (`U+02F4`);
- MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT (`U+02F5`);
- MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT (`U+02F6`);
- MODIFIER LETTER RAISED COLON (`U+02F8`);
- MODIFIER LETTER BEGIN HIGH TONE (`U+02F9`);
- MODIFIER LETTER END HIGH TONE (`U+02FA`);
- MODIFIER LETTER BEGIN LOW TONE (`U+02FB`);
- MODIFIER LETTER END LOW TONE (`U+02FC`);
- MODIFIER LETTER SHELF (`U+02FD`);
- MODIFIER LETTER OPEN SHELF (`U+02FE`);
- MODIFIER LETTER LOW LEFT ARROW (`U+02FF`);
- COMBINING LEFT ARROW BELOW (`U+20EE`);
- COMBINING RIGHT ARROW BELOW (`U+20EF`);

View file

@ -182,6 +182,23 @@ glyph-block Mark-Below : begin
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
set-base-anchor 'belowBrace' markMiddle belowMarkMid
create-glyph 'shelfBelow' : glyph-proc
set-width 0
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
set-base-anchor 'belowBrace' markMiddle belowMarkMid
include : VBar (SB - Width) belowMarkBot belowMarkTop (markFine * 2)
include : VBar (RightSB - Width) belowMarkBot belowMarkTop (markFine * 2)
include : HBarBottom (SB - Width) (RightSB - Width) belowMarkBot (markFine * 2)
create-glyph 'openShelfBelow' : glyph-proc
set-width 0
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
set-base-anchor 'belowBrace' markMiddle belowMarkMid
include : VBar (SB - Width) belowMarkBot belowMarkTop (markFine * 2)
include : HBarBottom (SB - Width) (RightSB - Width) belowMarkBot (markFine * 2)
# Turned below marks
define [TurnAboveMarkToBelow gnBelowMark unicodeBelowMark gnAboveMark] : begin
derive-glyphs gnBelowMark unicodeBelowMark gnAboveMark : function [src gr] : glyph-proc
@ -230,6 +247,8 @@ glyph-block Mark-Below : begin
TurnAboveMarkToBelow 'sbRsbUnderlineBelow' null 'sbRsbOverlineAbove'
TurnAboveMarkToBelow 'leftHalfCircleBelow' 0x31C 'rightHalfCircleAbove'
TurnAboveMarkToBelow 'rightHalfCircleBelow' 0x339 'leftHalfCircleAbove'
TurnAboveMarkToBelow 'leftArrowBelow' 0x20EE 'rightArrowAbove'
TurnAboveMarkToBelow 'rightArrowBelow' 0x20EF 'leftArrowAbove'
create-glyph 'greaterAndUpArrowheadBelow' 0x0356 : glyph-proc
set-width 0

View file

@ -9,7 +9,7 @@ glyph-block Symbol-Punctuation-Ascii-Marks : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Mark-Shared-Metrics : markExtend
glyph-block-import Mark-Above : aboveMarkTop
glyph-block-import Mark-Above : aboveMarkTop aboveMarkMid
glyph-block-import Symbol-Punctuation-Quotes-And-Primes
define [MarkZoom w] : glyph-proc
@ -48,3 +48,12 @@ glyph-block Symbol-Punctuation-Ascii-Marks : begin
include [refer-glyph 'markBaseSpace'] AS_BASE ALSO_METRICS
include [refer-glyph 'ringAbove']
include : MarkZoom currentGlyph.advanceWidth
do "spacing centered marks"
define shift : ApparentTranslate 0 (SymbolMid - aboveMarkMid)
derive-composites 'mdfMidGrave' 0x2F4 'markBaseSpace' 'graveAbove' shift
derive-composites 'mdfMidDoubleGrave' 0x2F5 'markBaseSpace' 'doubleGraveAbove' shift
derive-composites 'mdfMidDoubleAcute' 0x2F6 'markBaseSpace' 'doubleAcuteAbove' shift
derive-composites 'mdfShelf' 0x2FD 'markBaseSpace' 'shelfBelow'
derive-composites 'mdfOpenShelf' 0x2FE 'markBaseSpace' 'openShelfBelow'

View file

@ -11,6 +11,8 @@ glyph-block Symbol-Other-Phonetic : begin
glyph-block-import Common-Derivatives
local triangleSize : Math.min (PeriodRadius) (XH / 5)
local toneMarkLeft : mix SB RightSB 0.1
local toneMarkRight : Width - toneMarkLeft
create-glyph 'trianglecolon' 0x2D0 : glyph-proc
include : union
@ -29,23 +31,25 @@ glyph-block Symbol-Other-Phonetic : begin
corner Middle (XH - triangleSize * 2.75)
corner (Middle + triangleSize * 1.35) XH
define [yOfTone tone] : mix (OperatorStroke / 2) (CAP - OperatorStroke / 2) (tone / 4)
define [yOfTone tone] : mix (OperatorStroke / 2) (CAP - OperatorStroke / 2) (tone / 4)
define [yOfToneNeutral tone] : mix DotRadius (CAP - DotRadius) (tone / 4)
define [yOfToneDepart a b p] : mix (CAP * a + OperatorStroke / 2) (CAP * b - OperatorStroke / 2) p
foreach tone [range 4 downtill 0] : begin
create-glyph ('tone' + tone) (0x2E5 + 4 - tone) : glyph-proc
include : VBarRight [mix SB RightSB 0.9] 0 CAP OperatorStroke
include : HBar [mix SB RightSB 0.1] ([mix SB RightSB 0.9] - 1) [yOfTone tone] OperatorStroke
include : VBarRight toneMarkRight 0 CAP OperatorStroke
include : HBar toneMarkLeft (toneMarkRight - 0.1) [yOfTone tone] OperatorStroke
create-glyph ('toneSandhi' + tone) (0xA712 + 4 - tone) : glyph-proc
include : VBarLeft [mix SB RightSB 0.1] 0 CAP OperatorStroke
include : HBar [mix SB RightSB 0.1] ([mix SB RightSB 0.9] - 1) [yOfTone tone] OperatorStroke
include : VBarLeft toneMarkLeft 0 CAP OperatorStroke
include : HBar (toneMarkLeft + 0.1) toneMarkRight [yOfTone tone] OperatorStroke
create-glyph ('toneNeutral' + tone) (0xA708 + 4 - tone) : glyph-proc
include : VBarRight [mix SB RightSB 0.9] 0 CAP OperatorStroke
include : DotAt ([mix SB RightSB 0.1] + DotRadius) [yOfToneNeutral tone] DotRadius
include : VBarRight toneMarkRight 0 CAP OperatorStroke
include : DotAt (toneMarkLeft + DotRadius) [yOfToneNeutral tone] DotRadius
create-glyph ('toneSandhiNeutral' + tone) (0xA70D + 4 - tone) : glyph-proc
include : VBarLeft [mix SB RightSB 0.1] 0 CAP OperatorStroke
include : DotAt ([mix SB RightSB 0.9] - DotRadius) [yOfToneNeutral tone] DotRadius
include : VBarLeft toneMarkLeft 0 CAP OperatorStroke
include : DotAt (toneMarkRight - DotRadius) [yOfToneNeutral tone] DotRadius
# Connected tones
foreach toneStart [range 4 downtill 0] : foreach toneEnd [range 4 downtill 0] : begin
create-glyph ('toneStart' + toneStart + toneEnd) : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
@ -110,3 +114,22 @@ glyph-block Symbol-Other-Phonetic : begin
create-glyph ('toneSandhiMid' + toneStart + toneMid + toneEnd) : glyph-proc
include [refer-glyph ('toneMid' + toneStart + toneMid + toneEnd)] AS_BASE ALSO_METRICS
Joining.set currentGlyph Joining.Classes.Mid
# Departing tones
local DepartingToneConfig : list
list 'departingToneYin' 0x2EA 0 0.5 0
list 'departingToneYang' 0x2EB 0 0.5 0.5
list 'beginHighTone' 0x2F9 0.6 1 1.0
list 'beginLowTone' 0x2FB 0 0.4 0
foreach { name code a b pos } [items-of DepartingToneConfig] : begin
create-glyph name code : glyph-proc
include : VBarLeft toneMarkLeft (CAP * a) (CAP * b) OperatorStroke
include : HBar (toneMarkLeft + 0.1) toneMarkRight [yOfToneDepart a b pos] OperatorStroke
local EnteringToneConfig : list
list 'endHighTone' 0x2FA 0.6 1 1.0
list 'endLowTone' 0x2FC 0 0.4 0
foreach { name code a b pos } [items-of EnteringToneConfig] : begin
create-glyph name code : glyph-proc
include : VBarRight toneMarkRight (CAP * a) (CAP * b) OperatorStroke
include : HBar toneMarkLeft (toneMarkRight - 0.1) [yOfToneDepart a b pos] OperatorStroke

View file

@ -63,9 +63,10 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
derive-glyphs 'revDoubleQuote' 0x201F 'revSingleQuote' DoubleQuoteProc
derive-glyphs 'revLowDoubleQuote' 0x2E42 'revLowSingleQuote' DoubleQuoteProc
alias 'mdfTurncomma' 0x2BB 'openSingleQuote'
alias 'mdfApostrophe' 0x2BC 'closeSingleQuote'
alias 'mdfRevComma' 0x2BD 'revSingleQuote'
alias 'mdfTurncomma' 0x2BB 'openSingleQuote'
alias 'mdfApostrophe' 0x2BC 'closeSingleQuote'
alias 'mdfRevComma' 0x2BD 'revSingleQuote'
alias 'mdfDoubleApostrophe' 0x2EE 'closeDoubleQuote'
# Primes
create-glyph 'prime' 0x2032 : glyph-proc

View file

@ -150,6 +150,14 @@ glyph-block Symbol-Punctuation-Small : begin
include : DrawAt df.middle [mix dr (XH - dr) k] (dr - overshoot)
include : DrawAt df.middle [mix dr (XH - dr) (1 - k)] (dr - overshoot)
create-glyph "modifierLetterRaisedColon.\(suffix)" : glyph-proc
local df : DivFrame para.diversityII
set-width df.width
local k 0.9
local dr : DotRadius * kDotRadius
include : DrawAt df.middle (CAP - [mix dr (XH - dr) k]) (dr - overshoot)
include : DrawAt df.middle (CAP - [mix dr (XH - dr) (1 - k)]) (dr - overshoot)
create-glyph "semicolon.\(suffix)" : glyph-proc
include [refer-glyph "comma.\(suffix)"] AS_BASE ALSO_METRICS
include [refer-glyph "xhPeriod.\(suffix)"]
@ -161,6 +169,7 @@ glyph-block Symbol-Punctuation-Small : begin
select-variant 'colon' ':' (follow -- 'punctuationDot')
select-variant 'colon/mid' (follow -- 'punctuationDot')
select-variant 'modifierLetterColon' 0xA789 (follow -- 'punctuationDot')
select-variant 'modifierLetterRaisedColon' 0x2F8 (follow -- 'punctuationDot')
select-variant 'semicolon' ';' (follow -- 'punctuationDot')
select-variant 'invertSemicolon' 0x204F (follow -- 'punctuationDot')
alias 'greekquestion' 0x37E 'semicolon'

View file

@ -140,6 +140,7 @@ export : define decompositionOverrides : object
."\u02F0" "\uE00D\uE004"
."\u02F1" "\uE00D\u0354"
."\u02F2" "\uE00D\u0355"
."\u02FF" "\uE00D\u20EE"
."\u1FED" "\uE00D\u0308\u0300"
."\u1FEE" "\uE00D\u0308\u0301"

View file

@ -0,0 +1,7 @@
const ucdNames = require("@unicode/unicode-14.0.0/Names");
for (let i = 2; i < process.argv.length; i++) {
const lch = parseInt(process.argv[i], 16);
const name = ucdNames.get(lch);
console.log(" -", name, `(\`U+${lch.toString(16).toUpperCase().padStart(4, "0")}\`);`);
}

View file

@ -649,6 +649,7 @@ const PagesFontExport = task.group(`pages:font-export`, async (target, gr) => {
const outDir = Path.resolve(pagesDir, "shared/fonts", gr);
await target.need(GroupWebFonts(gr), de(outDir));
await cp(`${DIST}/${gr}/woff2`, Path.resolve(outDir, "woff2"));
await Delay(500);
await createWebFontCssImpl(target, Path.resolve(outDir, `${gr}.css`), gr, webfontFormatsPages);
await rm(Path.resolve(outDir, "ttf"));
});
@ -660,6 +661,7 @@ const PagesFastFontExport = task.group(`pages:fast-font-export`, async (target,
const outDir = Path.resolve(pagesDir, "shared/fonts", gr);
await target.need(GroupTTFs(gr), de(outDir));
await cp(`${DIST}/${gr}/ttf`, Path.resolve(outDir, "ttf"));
await Delay(500);
await createWebFontCssImpl(target, Path.resolve(outDir, `${gr}.css`), gr, webfontFormatsFast);
await rm(Path.resolve(outDir, "woff2"));
});