Skip to content

BASE building script #1086

@aaronbell

Description

@aaronbell

In thinking through the fontbakery check for the updated CJK metrics, I think that there is a method we could calculate a generic BASE table for CJ fonts that can be built into the builder tool for these fonts and help reduce the burden on designers to implement it themselves (if they feel uncomfortable doing so). For additional context and information about this, please check the other thread!

Japanese/Chinese
(314A) is a common character for Chinese / Japanese fonts and is often used as a reference for establishing the BASE table.

MARGIN = (UPM-(B-A))/2
A = y-direction minimum of 永
B = y-direction maximum of 永
C = y-direction minimum of emBox:  A - MARGIN
D = MARGIN
E = UPM - MARGIN / x-maximum of 永 + (x-minimum of 永)-D 

Korean
Additionally, as not all Hangeul fonts will include ideographs, we must select alternate reference glyphs common to all fonts. To that end, I've suggested 밈 (BC08) & 모 (BAA8).

MARGIN = (UPM-(B-A))/2
A = y-direction minimum of 永 / y-direction minimum of 밈
B = y-direction maximum of 永 / y-direction minimum of 밈
C = y-direction minimum of emBox:  A - MARGIN
D = MARGIN
E = UPM - MARGIN / x-maximum of 모 + ((x-minimum of 모)-D)

table BASE {
  HorizAxis.BaseTagList     icfb  icft  ideo  romn;
  HorizAxis.BaseScriptList  
                DFLT 	ideo  	A   B  C     0,
                hani  	ideo   	A   B  C     0,
                kana  	ideo   	A   B  C     0,
                latn  	romn   	A   B  C     0;

  VertAxis.BaseTagList      icfb  icft  ideo  romn;
  VertAxis.BaseScriptList 
                DFLT  	ideo    D   E     0   -C,
                hani  	ideo    D   E     0   -C,
                kana  	ideo    D   E     0   -C,
                latn  	romn    D   E     0   -C;
} BASE;

If the font also contains Cyrillic / Greek, we can duplicate the latn entry with cyrl and grek.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions