Skip to content

UoqMunThenKung: version 1.005#9468

Merged
emmamarichal merged 4 commits into
mainfrom
UoqMunThenKhung
Jun 11, 2025
Merged

UoqMunThenKung: version 1.005#9468
emmamarichal merged 4 commits into
mainfrom
UoqMunThenKhung

Conversation

@aaronbell

@aaronbell aaronbell commented May 16, 2025

Copy link
Copy Markdown
Collaborator

Taken from upstream repro https://github.com/MoonlitOwen/ThenKhung at a9fd850b5af389a764742cf34839254bba7baf1f

Font size: 4.9MB

@github-actions

Copy link
Copy Markdown
Contributor

FontBakery report

fontbakery version: 1.0.0

Check results

[28] UoqMunThenKhung-Regular.ttf
🔥 FAIL METADATA.pb font.full_name and font.post_script_name fields have equivalent values ? googlefonts/metadata/match_fullname_postscript
  • 🔥 FAIL

    METADATA.pb font full_name = "宇文天穹" does not match post_script_name = "UoqMunThenKhung-Regular"


    [code: mismatch]
🔥 FAIL METADATA.pb font.name and font.full_name fields match the values declared on the name table? googlefonts/metadata/nameid/family_and_full_names
  • 🔥 FAIL

    METADATA.pb Family name "Uoq Mun Then Khung" does not match name table entry "宇文天穹"!


    [code: familyname-mismatch]
🔥 FAIL METADATA.pb font.name value should be same as the family name declared on the name table. googlefonts/metadata/nameid/font_name
  • 🔥 FAIL

    Unmatched familyname in font: TTF has familyname = "UoqMunThenKhung" while METADATA.pb has font.name = "Uoq Mun Then Khung".


    [code: mismatch]
🔥 FAIL Check family name for GF Guide compliance. googlefonts/family_name_compliance
  • 🔥 FAIL

    "宇文天穹" contains the following characters which are not allowed: "天宇文穹".


    [code: forbidden-characters]

  • 🔥 FAIL

    "宇文天穹" doesn't start with an uppercase letter.


    [code: starts-with-not-uppercase]

🔥 FAIL Check font has a license. googlefonts/family/has_license
  • 🔥 FAIL

    No license file was found. Please add an OFL.txt or a LICENSE.txt file. If you are running fontbakery on a Google Fonts upstream repo, which is fine, just make sure there is a temporary license file in the same folder.


    [code: no-license]
🔥 FAIL Check font follows the Google Fonts CJK vertical metric schema googlefonts/cjk_vertical_metrics
  • 🔥 FAIL

    OS/2 fsSelection bit 7 must be disabled


    [code: bad-fselection-bit7]

  • 🔥 FAIL

    OS/2.sTypoAscender is "941" it should be 880


    [code: bad-OS/2.sTypoAscender]

  • 🔥 FAIL

    OS/2.sTypoDescender is "-187" it should be -120


    [code: bad-OS/2.sTypoDescender]

  • 🔥 FAIL

    hhea.ascent must match OS/2.usWinAscent


    [code: ascent-mismatch]

  • 🔥 FAIL

    hhea.descent must match absolute value of OS/2.usWinDescent


    [code: descent-mismatch]

⚠️ WARN Does the font contain chws and vchw features? cjk_chws_feature
⚠️ WARN Check if each glyph has the recommended amount of contours. contour_count
  • ⚠️ WARN

    This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are infered from the typical ammounts of contours observed in a large collection of reference font families. The divergences listed below may simply indicate a significantly different design on some of your glyphs. On the other hand, some of these may flag actual bugs in the font such as glyphs mapped to an incorrect codepoint. Please consider reviewing the design and codepoint assignment of these to make sure they are correct.

The following glyphs do not have the recommended number of contours:

- Glyph name: uni0051	Contours detected: 3	Expected: 2
  • Glyph name: uni210A Contours detected: 3 Expected: 2

  • Glyph name: uni2504 Contours detected: 6 Expected: 3

  • Glyph name: uni2505 Contours detected: 6 Expected: 3

  • Glyph name: uni2506 Contours detected: 6 Expected: 3

  • Glyph name: uni2507 Contours detected: 6 Expected: 3

  • Glyph name: uni2508 Contours detected: 6 Expected: 4

  • Glyph name: uni2509 Contours detected: 6 Expected: 4

  • Glyph name: uni250A Contours detected: 6 Expected: 4

  • Glyph name: uni250B Contours detected: 6 Expected: 4

  • 9 more.

Use -F or --full-lists to disable shortening of long lists.

[code: contour-count]
⚠️ WARN Ensure files are not too large. file_size
  • ⚠️ WARN

    Font file is 4.7Mb; ideally it should be less than 1.0Mb


    [code: large-font]
⚠️ WARN Does GPOS table have kerning information? This check skips monospaced fonts as defined by post.isFixedPitch value gpos_kerning_info
  • ⚠️ WARN

    GPOS table lacks kerning information.


    [code: lacks-kern-info]
⚠️ WARN Check math signs have the same width. math_signs_width
  • ⚠️ WARN

    The most common width is 750 among a set of 6 math glyphs.
    The following math glyphs have a different width, though:

Width = 780: uni003E, uni003C

Width = 580: uni00AC

Width = 400: uni2212

Width = 1000: uni2266, uni3012

[code: width-outliers]
⚠️ WARN Glyph names are all valid? valid_glyphnames
  • ⚠️ WARN

    The following glyph names may be too long for some legacy systems which may expect a maximum 31-characters length limit:
    katakanahiraganaprolongedsoundmod.half.rotat, katakanahiraganasemivoicedsoundmod.half.rotat and katakanahiraganavoicedsoundmod.half.rotat


    [code: legacy-long-names]
⚠️ WARN Validate size, and resolution of article images, and ensure article page has minimum length and includes visual assets. googlefonts/article/images
  • ⚠️ WARN

    Article page is too short!


    [code: length-requirements-not-met]
⚠️ WARN METADATA.pb: Designers are listed correctly on the Google Fonts catalog? googlefonts/metadata/designer_profiles
  • ⚠️ WARN

    It seems that Moonlit Owen is still not listed on the designers catalog. Please submit a photo and a link to a webpage where people can learn more about the work of this designer/typefoundry.


    [code: profile-not-found]
⚠️ WARN Check for codepoints not covered by METADATA subsets. googlefonts/metadata/unreachable_subsetting
  • ⚠️ WARN

    The following codepoints supported by the font are not covered by
    any subsets defined in the font's metadata file, and will never
    be served. You can solve this by either manually adding additional
    subset declarations to METADATA.pb, or by editing the glyphset
    definitions.

  • U+0141 LATIN CAPITAL LETTER L WITH STROKE: try adding latin-ext
  • U+0142 LATIN SMALL LETTER L WITH STROKE: try adding latin-ext
  • U+0160 LATIN CAPITAL LETTER S WITH CARON: try adding latin-ext
  • U+0161 LATIN SMALL LETTER S WITH CARON: try adding latin-ext
  • U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS: try adding latin-ext
  • U+017D LATIN CAPITAL LETTER Z WITH CARON: try adding latin-ext
  • U+017E LATIN SMALL LETTER Z WITH CARON: try adding latin-ext
  • U+0192 LATIN SMALL LETTER F WITH HOOK: try adding latin-ext
  • U+0305 COMBINING OVERLINE: try adding one of: gothic, coptic, math, elbasan, glagolitic
  • U+0306 COMBINING BREVE: try adding one of: old-permic, tifinagh 2869 more.

Use -F or --full-lists to disable shortening of long lists.

Or you can add the above codepoints to one of the subsets supported by the font: chinese-traditional, cyrillic, latin, menu, symbols2

[code: unreachable-subsetting]
⚠️ WARN Ensure dotted circle glyph is present and can attach marks. dotted_circle
  • ⚠️ WARN

    No dotted circle glyph present


    [code: missing-dotted-circle]
⚠️ WARN Ensure soft_dotted characters lose their dot when combined with marks that replace the dot. soft_dotted
  • ⚠️ WARN

    The dot of soft dotted characters used in orthographies must disappear in the following strings: i̋ j́ j̈

The dot of soft dotted characters should disappear in other cases, for example: i̅ ĭ i̇ ǐ į̅ į̆ į̇ į̋ į̌ j̅ j̆ j̇ j̋ ǰ j̨́ j̨̅ j̨̆ j̨̇ j̨̈ j̨̋

[code: soft-dotted]
⚠️ WARN Do any segments have colinear vectors? outline_colinear_vectors
  • ⚠️ WARN

    The following glyphs have colinear vectors:

* uni0071 (U+0071): L<<527.0,-144.0>--<528.0,459.0>> -> L<<528.0,459.0>--<528.0,520.0>>

* uni0071.rotat: L<<-24.0,353.0>--<579.0,352.0>> -> L<<579.0,352.0>--<640.0,352.0>>

* uni00BC.full: L<<832.0,74.0>--<888.0,73.0>> -> L<<888.0,73.0>--<902.0,73.0>>

* uni0416 (U+0416): L<<580.0,369.0>--<719.0,142.0>> -> L<<719.0,142.0>--<769.0,61.0>>

* uni5018 (U+5018): L<<794.0,469.0>--<795.0,51.0>> -> L<<795.0,51.0>--<795.0,31.0>>

* uni502B (U+502B): L<<780.0,370.0>--<781.0,49.0>> -> L<<781.0,49.0>--<781.0,3.0>>

* uni5212 (U+5212): L<<662.0,10.0>--<652.0,13.0>> -> L<<652.0,13.0>--<641.0,16.0>>

* uni5228 (U+5228): L<<662.0,10.0>--<652.0,13.0>> -> L<<652.0,13.0>--<641.0,16.0>>

* uni532D (U+532D): L<<860.0,348.0>--<868.0,508.0>> -> L<<868.0,508.0>--<868.0,518.0>>

* uni53CA (U+53CA): L<<531.0,554.0>--<513.0,516.0>> -> L<<513.0,516.0>--<509.0,508.0>>

* 58 more.

Use -F or --full-lists to disable shortening of long lists.

[code: found-colinear-vectors]
⚠️ WARN Check the direction of the outermost contour in each glyph outline_direction
  • ⚠️ WARN

    The following glyphs have a counter-clockwise outer contour:

* .notdef has a counter-clockwise outer contour

* asciitilde.full.vert has a counter-clockwise outer contour

* bar.full.vert has a counter-clockwise outer contour

* equal.full.vert has a counter-clockwise outer contour

* equal.full.vert has a counter-clockwise outer contour

* hyphenminus.full.001 has a counter-clockwise outer contour

* ideographiccomma.half.rotat has a counter-clockwise outer contour

* ideographicfullstop.half.rotat has a counter-clockwise outer contour

* kangxiradicalturtlehani.jp78 has a counter-clockwise outer contour

* katakanaakana.half.rotat has a counter-clockwise outer contour

* 30181 more.

Use -F or --full-lists to disable shortening of long lists.

[code: ccw-outer-contour]
⚠️ WARN Do outlines contain any jaggy segments? outline_jaggy_segments
  • ⚠️ WARN

    The following glyphs have jaggy segments:

* uni004D.half.rotat: B<<453.5,563.5>-<588.0,538.0>-<723.0,514.0>>/L<<723.0,514.0>--<174.0,514.0>> = 10.08059798754231

* uni004D.half.rotat: L<<170.0,772.0>--<699.0,772.0>>/B<<699.0,772.0>-<579.0,752.0>-<459.0,734.0>> = 9.462322208025613

* uni004D.half: B<<316.5,333.5>-<342.0,468.0>-<366.0,603.0>>/L<<366.0,603.0>--<366.0,54.0>> = 10.08059798754231

* uni004D.half: L<<108.0,50.0>--<108.0,579.0>>/B<<108.0,579.0>-<128.0,459.0>-<146.5,339.0>> = 9.462322208025613

* uni0057.half.rotat: B<<333.0,709.0>-<298.0,714.0>-<286.0,716.0>>/B<<286.0,716.0>-<363.0,721.0>-<440.0,725.5>> = 13.177611313454387

* uni0057.half.rotat: B<<452.0,505.5>-<369.0,510.0>-<286.0,515.0>>/B<<286.0,515.0>-<405.0,529.0>-<524.5,542.0>> = 10.157223659622105

* uni0057.half: B<<171.0,213.0>-<166.0,178.0>-<164.0,166.0>>/B<<164.0,166.0>-<159.0,243.0>-<154.5,320.0>> = 13.177611313454387

* uni0057.half: B<<374.5,332.0>-<370.0,249.0>-<365.0,166.0>>/B<<365.0,166.0>-<351.0,285.0>-<338.0,404.5>> = 10.157223659622105

* uni0072 (U+0072): L<<226.0,325.0>--<226.0,324.0>>/B<<226.0,324.0>-<232.0,363.0>-<251.5,403.5>> = 8.746162262555211

* uni0072.rotat: L<<445.0,654.0>--<444.0,654.0>>/B<<444.0,654.0>-<483.0,648.0>-<523.5,628.5>> = 8.746162262555211

* 536 more.

Use -F or --full-lists to disable shortening of long lists.

[code: found-jaggy-segments]
⚠️ WARN Do outlines contain any semi-vertical or semi-horizontal lines? outline_semi_vertical
  • ⚠️ WARN

    The following glyphs have semi-vertical/semi-horizontal lines:

* katakanamokana.half.rotat: L<<719.0,700.0>--<544.0,701.0>>

* katakananekana.half.rotat: L<<396.0,659.0>--<94.0,661.0>>

* katakananukana.half.rotat: L<<737.0,755.0>--<738.0,537.0>>

* katakananukana.half.rotat: L<<789.0,462.0>--<790.0,755.0>>

* katakanarokana.half.rotat: L<<243.0,737.0>--<699.0,738.0>>

* katakanarokana.half.rotat: L<<749.0,801.0>--<190.0,797.0>>

* katakanarukana.half.rotat: L<<274.0,576.0>--<799.0,574.0>>

* katakanatikana.half.rotat: L<<544.0,583.0>--<713.0,584.0>>

* uni0045.half.rotat: L<<782.0,799.0>--<203.0,798.0>>

* uni0045.half: L<<81.0,662.0>--<82.0,83.0>>

* 2563 more.

Use -F or --full-lists to disable shortening of long lists.

[code: found-semi-vertical]
ℹ️ INFO List all superfamily filepaths superfamily/list
  • ℹ️ INFO

    ofl/uoqmunthenkhung


    [code: family-path]
ℹ️ INFO Show hinting filesize impact. hinting_impact
  • ℹ️ INFO

    Hinting filesize impact:

ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf
Dehinted Size 4.7Mb
Hinted Size 4.7Mb
Increase 24 bytes
Change 0.0 %
[code: size-impact]
ℹ️ INFO Font contains all required tables? required_tables
  • ℹ️ INFO

    This font contains the following optional tables:

- loca

- prep

- BASE

- GSUB

- gasp

- vhea

- vmtx

[code: optional-tables]

ℹ️ INFO METADATA.pb: Validate family.minisite_url field. googlefonts/metadata/minisite_url
  • ℹ️ INFO

    Please consider adding a family.minisite_url entry.


    [code: lacks-minisite-url]
ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? googlefonts/gasp
  • ℹ️ INFO

    These are the ppm ranges declared on the gasp table:

PPM <= 65535: flag = 0x0F - Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®

[code: ranges]
ℹ️ INFO Ensure fonts have ScriptLangTags declared on the 'meta' table. googlefonts/meta/script_lang_tags
  • ℹ️ INFO

    zh, Hant, zh-Hant, nan, hak, yue, nan-Latn, nan-Latn-pehoeji, nan-Latn-tailo, Bopo, Hanb


    [code: dlng-tag]

  • ℹ️ INFO

    zh, Hans, Hant, zh-Hans, zh-Hant, nan, hak, yue, Bopo, Hanb, zh-Latn, zh-Latn-pinyin, nan-Latn, nan-Latn-pehoeji, nan-Latn-tailo, Latn, Cyrl, Grek


    [code: slng-tag]

ℹ️ INFO Font has old ttfautohint applied? googlefonts/old_ttfautohint
  • ℹ️ INFO

    Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: ['Version 1.197']


    [code: version-not-detected]
[2] Family checks
🔥 FAIL Directory name in GFonts repo structure must match NameID 1 of the regular. googlefonts/repo/dirname_matches_nameid_1
  • 🔥 FAIL

    Family name on the name table ('宇文天穹') does not match directory name in the repo structure ('uoqmunthenkhung'). Expected '宇文天穹'.


    [code: mismatch]
ℹ️ INFO Check axis ordering on the STAT table. googlefonts/STAT/axis_order
  • ℹ️ INFO

    All of the fonts lack a STAT table.


    [code: summary]

Summary

💥 ERROR ☠ FATAL 🔥 FAIL ⚠️ WARN ⏩ SKIP ℹ️ INFO ✅ PASS 🔎 DEBUG
0 0 7 15 66 8 140 0
0% 0% 3% 6% 28% 3% 59% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • PASS
  • DEBUG

@aaronbell aaronbell marked this pull request as ready for review May 17, 2025 20:40
@aaronbell aaronbell added the II CJK Chinese, Japanese, Korean scripts label May 17, 2025
@NightFurySL2001

Copy link
Copy Markdown
Contributor

I've updated the build system to use the config version number @ 1.005, please help to update here so that we can still do a reasonable version bump in the future.

@aaronbell aaronbell changed the title Uoq Mun Then Kung: version 1.197 Uoq Mun Then Kung: version 1.005 May 20, 2025
@aaronbell

Copy link
Copy Markdown
Collaborator Author

@NightFurySL2001 Done.

@github-actions

Copy link
Copy Markdown
Contributor

FontSpector report

fontspector version: 1.0.2

Checks with FATAL results

These must be addressed first.

[2] ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf
💥 ERROR Version number has increased since previous release on Google Fonts? (googlefonts/version_bump)
  • 💥 ERROR Error: Failed to find fileRefs in manifest: Object {"error": String("Unable to find family: UoqMunThenKhung")}
💥 ERROR Check if the vertical metrics of a CJK family are similar to the same family hosted on Google Fonts. (googlefonts/cjk_vertical_metrics_regressions)
  • 💥 ERROR Error: Could not get remote style: Failed to find fileRefs in manifest: Object {"error": String("Unable to find family: UoqMunThenKhung")}

All other checks

[5] ofl/uoqmunthenkhung
⚠️ WARN Check for codepoints not covered by METADATA subsets. (googlefonts/metadata/unreachable_subsetting)
  • ⚠️ WARN ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf: The following codepoints supported by the font are not covered by any subsets defined in the font's metadata file, and will never be served. You can solve this by either manually adding additional subset declarations to METADATA.pb, or by editing the glyphset definitions.
  • U+0305 COMBINING OVERLINE: try adding one of: gothic, coptic, elbasan, math, glagolitic
  • U+0306 COMBINING BREVE: try adding one of: old-permic, tifinagh
  • U+0307 COMBINING DOT ABOVE: try adding one of: syriac, coptic, hebrew, canadian-aboriginal, tai-le, tifinagh, math, old-permic, todhri, duployan, malayalam
  • U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: cherokee, osage
  • U+030C COMBINING CARON: try adding one of: cherokee, tai-le
  • U+0391 GREEK CAPITAL LETTER ALPHA: try adding one of: elbasan, greek, math
  • U+0392 GREEK CAPITAL LETTER BETA: try adding one of: elbasan, greek, math
  • U+0393 GREEK CAPITAL LETTER GAMMA: try adding one of: math, elbasan, greek
  • U+0394 GREEK CAPITAL LETTER DELTA: try adding one of: elbasan, greek, math
    ... and 244 others

Or you can add the above codepoints to one of the subsets supported by the font: chinese-hongkong, chinese-simplified, chinese-traditional, cyrillic, japanese, latin-ext, latin, symbols2 [code: unreachable-subsetting]

🔥 FAIL Check for presence of an ARTICLE.en_us.html file (googlefonts/description/has_article)
  • 🔥 FAIL This font doesn't have an ARTICLE.en_us.html file. [code: missing-article]
🔥 FAIL Check font has a license. (googlefonts/family/has_license)
  • 🔥 FAIL No license file was found. Please add an OFL.txt or a LICENSE.txt file. [code: no-license]
🔥 FAIL Check Google Fonts glyph coverage. (googlefonts/glyph_coverage)
  • 🔥 FAIL ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf missing required codepoints:
  • 0x1E9E
  • 0x0144
  • 0x0102
  • 0x0136
  • 0x0137
  • 0x02D9
  • 0x0304
  • 0x1EF3
  • 0x0173
    ... and 96 others [code: missing-codepoints]
ℹ️ INFO Check axis ordering on the STAT table. (googlefonts/STAT/axis_order)
  • ℹ️ INFO All of the fonts lack a STAT table. [code: summary]
[24] ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf
ℹ️ INFO Checking OS/2 fsSelection value. (opentype/xavgcharwidth)
⚠️ WARN Does the font contain chws and vchw features? (cjk_chws_feature)
⚠️ WARN Check if each glyph has the recommended amount of contours. (contour_count)
  • ⚠️ WARN This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are
    infered from the typical ammounts of contours observed in a
    large collection of reference font families. The divergences
    listed below may simply indicate a significantly different
    design on some of your glyphs. On the other hand, some of these
    may flag actual bugs in the font such as glyphs mapped to an
    incorrect codepoint. Please consider reviewing the design and
    codepoint assignment of these to make sure they are correct.

    The following glyphs do not have the recommended number of contours:

  • uniFF31 (U+FF31): found 3, expected one of: {2}
  • uniFF47 (U+FF47): found 3, expected one of: {2}
  • uni3059 (U+3059): found 1, expected one of: {2}
  • uni305A (U+305A): found 3, expected one of: {4}
  • uni305F (U+305F): found 2, expected one of: {3}
  • uni3072 (U+3072): found 2, expected one of: {1}
  • uni3082 (U+3082): found 2, expected one of: {1}
  • uni3085 (U+3085): found 3, expected one of: {4, 2}
  • uni308B (U+308B): found 1, expected one of: {2}
    ... and 14 others [code: contour-count]
⚠️ WARN Ensure files are not too large. (file_size)
  • ⚠️ WARN Font file is 4.90 MB; ideally it should be less than 1.05 MB [code: large-font]
⚠️ WARN Does GPOS table have kerning information? (gpos_kerning_info)
  • ⚠️ WARN GPOS table lacks kerning information. [code: lacks-kern-info]
ℹ️ INFO Show hinting filesize impact. (hinting_impact)
  • ℹ️ INFO Hinting filesize impact:
UoqMunThenKhung-Regular.ttf
Dehinted Size 4901664
Hinted Size 4901688
Increase 24
Change 0.0 %
⚠️ WARN Are there caret positions declared for every ligature? (ligature_carets)
  • ⚠️ WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
⚠️ WARN Check math signs have the same width. (math_signs_width)
  • ⚠️ WARN The most common width is 750 among a set of 12 math glyphs.
    The following math glyphs have a different width, though:
    width=580: uni00AC
    width=1000: uni2266, uni3012
    width=780: uni003C, uni003E
    width=400: uni2212 [code: width-outliers]
ℹ️ INFO Font contains all required tables? (required_tables)
  • ℹ️ INFO This font contains the following optional tables:

    loca
    prep
    BASE
    GSUB
    gasp
    vhea
    vmtx [code: optional-tables]

⚠️ WARN Ensure indic fonts have the Indian Rupee Sign glyph. (rupee)
  • ⚠️ WARN Font is missing the Indian Rupee Sign glyph. Please add a glyph for Indian Rupee Sign (₹) at codepoint U+20B9. [code: missing-rupee]
⚠️ WARN Glyph names are all valid? (valid_glyphnames)
  • ⚠️ WARN The following glyph names are too long: "katakanahiraganavoicedsoundmod.half.rotat, katakanahiraganasemivoicedsoundmod.half.rotat, katakanahiraganaprolongedsoundmod.half.rotat" [code: legacy-long-names]

  • ⚠️ WARN Glyph 0x0020 is called uni0020; must be named 'space'. [code: not-recommended-0020]

⚠️ WARN Font has correct separator glyphs? (googlefonts/separator_glyphs)
  • ⚠️ WARN The following separator glyphs are missing:
  • U+2028
  • U+2029 [code: missing-separator-glyphs]
🔥 FAIL Check family name for GF Guide compliance. (googlefonts/name/family_name_compliance)
  • 🔥 FAIL "UoqMunThenKhung" is a CamelCased name. To solve this, simply use spaces instead in the font name. [code: camelcase]
⚠️ WARN Ensure dotted circle glyph is present and can attach marks. (dotted_circle)
  • ⚠️ WARN No dotted circle glyph present [code: missing-dotted-circle]
⚠️ WARN Ensure soft_dotted characters lose their dot when combined with marks that replace the dot. (soft_dotted)
  • ⚠️ WARN The dot of soft dotted characters used in orthographies must disappear in the following strings: * j̈
  • i̋The dot of soft dotted characters should disappear in other cases, for example: * ǰ̨
  • j̨̅
  • j̨̇
  • j̨̈
  • j̨̆
  • j̨́
  • j̨̋

  • ... and 12 others [code: soft-dotted]
⚠️ WARN Do any segments have colinear vectors? (outline_colinear_vectors)
  • ⚠️ WARN The following glyphs have colinear vectors:
  • uni0071 (U+0071): Line { p0: (527.0, -144.0), p1: (528.0, 459.0) } -> Line { p0: (528.0, 459.0), p1: (528.0, 520.0) }
  • uni0416 (U+0416): Line { p0: (580.0, 369.0), p1: (719.0, 142.0) } -> Line { p0: (719.0, 142.0), p1: (769.0, 61.0) }
  • uni55AB (U+55AB): Line { p0: (402.0, 820.0), p1: (405.0, 692.0) } -> Line { p0: (405.0, 692.0), p1: (405.0, 688.0) }
  • uni53CA (U+53CA): Line { p0: (531.0, 554.0), p1: (513.0, 516.0) } -> Line { p0: (513.0, 516.0), p1: (509.0, 508.0) }
  • uni96C7 (U+96C7): Line { p0: (148.0, 779.0), p1: (149.0, 658.0) } -> Line { p0: (149.0, 658.0), p1: (149.0, 440.0) }
  • uni5F31 (U+5F31): Line { p0: (791.0, 347.0), p1: (790.0, 330.0) } -> Line { p0: (790.0, 330.0), p1: (788.0, 251.0) }
  • uni821C (U+821C): Line { p0: (481.0, 343.0), p1: (491.0, 384.0) } -> Line { p0: (491.0, 384.0), p1: (497.0, 407.0) }
  • uni5C3B (U+5C3B): Line { p0: (751.0, 38.0), p1: (751.0, 40.0) } -> Line { p0: (751.0, 40.0), p1: (763.0, 368.0) }
  • uni5C3B (U+5C3B): Line { p0: (642.0, 320.0), p1: (633.0, 34.0) } -> Line { p0: (633.0, 34.0), p1: (633.0, 30.0) }
    ... and 59 others [code: found-colinear-vectors]
⚠️ WARN Check the direction of the outermost contour in each glyph (outline_direction)
  • ⚠️ WARN The following glyphs have a counter-clockwise outer contour:
  • .notdef has a counter-clockwise outer contour
  • uni0021 (U+0021) has a counter-clockwise outer contour
  • uni0021 (U+0021) has a counter-clockwise outer contour
  • uni0022 (U+0022) has a counter-clockwise outer contour
  • uni0022 (U+0022) has a counter-clockwise outer contour
  • uni0023 (U+0023) has a counter-clockwise outer contour
  • uni0024 (U+0024) has a counter-clockwise outer contour
  • uni0025 (U+0025) has a counter-clockwise outer contour
  • uni0025 (U+0025) has a counter-clockwise outer contour
    ... and 30187 others [code: ccw-outer-contour]
⚠️ WARN Do outlines contain any jaggy segments? (outline_jaggy_segments)
  • ⚠️ WARN The following glyphs have jaggy segments:
  • uni0072 (U+0072): Line(Line { p0: (226.0, 325.0), p1: (226.0, 324.0) })/Quad(QuadBez { p0: (226.0, 324.0), p1: (232.0, 363.0), p2: (251.5, 403.5) }) = 8.746162262555254
  • uni004D.half: Line(Line { p0: (108.0, 50.0), p1: (108.0, 579.0) })/Quad(QuadBez { p0: (108.0, 579.0), p1: (128.0, 459.0), p2: (146.5, 339.0) }) = 9.46232220802565
  • uni004D.half: Quad(QuadBez { p0: (316.5, 333.5), p1: (342.0, 468.0), p2: (366.0, 603.0) })/Line(Line { p0: (366.0, 603.0), p1: (366.0, 54.0) }) = 10.08059798754231
  • uni0057.half: Quad(QuadBez { p0: (374.5, 332.0), p1: (370.0, 249.0), p2: (365.0, 166.0) })/Quad(QuadBez { p0: (365.0, 166.0), p1: (351.0, 285.0), p2: (338.0, 404.5) }) = 10.15722365962214
  • uni0057.half: Quad(QuadBez { p0: (171.0, 213.0), p1: (166.0, 178.0), p2: (164.0, 166.0) })/Quad(QuadBez { p0: (164.0, 166.0), p1: (159.0, 243.0), p2: (154.5, 320.0) }) = 13.17761131345436
  • uni308C.half: Quad(QuadBez { p0: (96.0, 245.0), p1: (109.0, 293.0), p2: (119.0, 340.0) })/Line(Line { p0: (119.0, 340.0), p1: (117.0, -10.0) }) = 11.684077495521025
  • uni308F.half: Quad(QuadBez { p0: (123.0, 245.0), p1: (135.0, 294.0), p2: (147.0, 340.0) })/Line(Line { p0: (147.0, 340.0), p1: (145.0, -10.0) }) = 14.293473097787261
  • uni308E.half: Quad(QuadBez { p0: (159.0, 218.0), p1: (166.0, 244.0), p2: (168.0, 252.0) })/Line(Line { p0: (168.0, 252.0), p1: (165.0, -28.0) }) = 13.422383604817174
  • uniFF5B (U+FF5B): Quad(QuadBez { p0: (723.5, 366.0), p1: (696.0, 380.0), p2: (664.0, 382.0) })/Quad(QuadBez { p0: (664.0, 382.0), p1: (696.0, 384.0), p2: (723.5, 397.5) }) = 7.152668749994792
    ... and 536 others [code: found-jaggy-segments]
⚠️ WARN Check there are no overlapping path segments (overlapping_path_segments)
  • ⚠️ WARN The following glyphs have overlapping path segments:
  • uni6BCB (U+6BCB): Quad(QuadBez { p0: (376.0, 141.0), p1: (376.0, 141.0), p2: (376.0, 140.5) }) has the same coordinates as a previous segment.
  • uni7FAF (U+7FAF): Quad(QuadBez { p0: (237.0, 615.0), p1: (254.0, 669.0), p2: (267.5, 723.0) }) has the same coordinates as a previous segment.
  • uni7FAF (U+7FAF): Quad(QuadBez { p0: (267.5, 723.0), p1: (281.0, 777.0), p2: (295.0, 832.0) }) has the same coordinates as a previous segment. [code: overlapping-path-segments]
⚠️ WARN Do outlines contain any semi-vertical or semi-horizontal lines? (outline_semi_vertical)
  • ⚠️ WARN The following glyphs have semi-vertical/semi-horizontal lines:
  • uni0049 (U+0049): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
  • uni0059 (U+0059): Line(Line { p0: (273.0, 267.0), p1: (272.0, 84.0) })
  • uni0071 (U+0071): Line(Line { p0: (527.0, -144.0), p1: (528.0, 459.0) })
  • uni0074 (U+0074): Line(Line { p0: (241.0, 83.0), p1: (243.0, 469.0) })
  • uni00C6 (U+00C6): Line(Line { p0: (456.0, 328.0), p1: (457.0, 83.0) })
  • uni0152 (U+0152): Line(Line { p0: (493.0, 683.0), p1: (494.0, 87.0) })
  • uni00CC (U+00CC): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
  • uni00CD (U+00CD): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
  • uni00CE (U+00CE): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
    ... and 2564 others [code: found-semi-vertical]
🔥 FAIL Check font follows the Google Fonts CJK vertical metric schema (googlefonts/cjk_vertical_metrics)
  • 🔥 FAIL OS/2 fsSelection bit 7 must be disabled [code: bad-fselection-bit7]

  • 🔥 FAIL OS/2.sTypoAscender is 941; it should be 880 [code: bad-OS/2.sTypoAscender]

  • 🔥 FAIL OS/2.sTypoDescender is -187; it should be -120 [code: bad-OS/2.sTypoDescender]

  • 🔥 FAIL hhea.ascent must match OS/2.usWinAscent [code: ascent-mismatch]

  • 🔥 FAIL hhea.descent must match absolute value of OS/2.usWinDescent [code: descent-mismatch]

ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? (googlefonts/gasp)
  • ℹ️ INFO These are the ppm ranges declared on the gasp table:
PPM <= 65535- Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®
[code: ranges]
ℹ️ INFO Ensure fonts have ScriptLangTags declared on the 'meta' table. (googlefonts/meta/script_lang_tags)
  • ℹ️ INFO "zh, Hant, zh-Hant, nan, hak, yue, nan-Latn, nan-Latn-pehoeji, nan-Latn-tailo, Bopo, Hanb" [code: dlng-tag]

  • ℹ️ INFO "zh, Hans, Hant, zh-Hans, zh-Hant, nan, hak, yue, Bopo, Hanb, zh-Latn, zh-Latn-pinyin, nan-Latn, nan-Latn-pehoeji, nan-Latn-tailo, Latn, Cyrl, Grek" [code: slng-tag]

ℹ️ INFO Font has old ttfautohint applied? (googlefonts/old_ttfautohint)
  • ℹ️ INFO Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: Version 1.005 [code: version-not-detected]

Summary

ℹ️ INFO 💥 ERROR ✅ PASS ⏩ SKIP ⚠️ WARN 🔥 FAIL
8 2 86 63 19 9
4% 1% 48% 35% 11% 5%

@emmamarichal

emmamarichal commented May 22, 2025

Copy link
Copy Markdown
Collaborator

@aaronbell

  • 🔥 FAIL "UoqMunThenKhung" is a CamelCased name. -> Shouldn't be Uoq Mun Then Khung?
  • Add OFL.txt to the folder
  • Update v-metrics to follow Cactus and Chocolate

@emmamarichal emmamarichal added -- Needs Upstream Resolution Upstream fix required before moving forward I New Font labels May 22, 2025
@emmamarichal emmamarichal linked an issue May 22, 2025 that may be closed by this pull request
9 tasks
Updating vertical metrics to follow more standard models akin to the other MoonlitOwen projects (for better consistency).

Also changed the metadata and article to use the same CamelCase as upstream.
@aaronbell aaronbell changed the title Uoq Mun Then Kung: version 1.005 UoqMunThenKung: version 1.005 May 27, 2025
Adding OFL
@aaronbell

Copy link
Copy Markdown
Collaborator Author

@emmamarichal Night resolved the vertical metrics item, I've added the OFL.
As for the font name, it is CamelCased upstream as well. Can we add it to the whitelist?

@github-actions

Copy link
Copy Markdown
Contributor

FontSpector report

fontspector version: 1.0.2

Checks with FATAL results

These must be addressed first.

[2] ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf
💥 ERROR Version number has increased since previous release on Google Fonts? (googlefonts/version_bump)
  • 💥 ERROR Error: Failed to find fileRefs in manifest: Object {"error": String("Unable to find family: UoqMunThenKhung")}
💥 ERROR Check if the vertical metrics of a CJK family are similar to the same family hosted on Google Fonts. (googlefonts/cjk_vertical_metrics_regressions)
  • 💥 ERROR Error: Could not get remote style: Failed to find fileRefs in manifest: Object {"error": String("Unable to find family: UoqMunThenKhung")}

All other checks

[24] ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf
🔥 FAIL Check family name for GF Guide compliance. (googlefonts/name/family_name_compliance)
  • 🔥 FAIL "UoqMunThenKhung" is a CamelCased name. To solve this, simply use spaces instead in the font name. [code: camelcase]
🔥 FAIL Check font follows the Google Fonts CJK vertical metric schema (googlefonts/cjk_vertical_metrics)
  • 🔥 FAIL OS/2 fsSelection bit 7 must be disabled [code: bad-fselection-bit7]

  • 🔥 FAIL OS/2.sTypoAscender is 941; it should be 880 [code: bad-OS/2.sTypoAscender]

  • 🔥 FAIL OS/2.sTypoDescender is -187; it should be -120 [code: bad-OS/2.sTypoDescender]

  • 🔥 FAIL hhea.ascent must match OS/2.usWinAscent [code: ascent-mismatch]

  • 🔥 FAIL hhea.descent must match absolute value of OS/2.usWinDescent [code: descent-mismatch]

⚠️ WARN Does the font contain chws and vchw features? (cjk_chws_feature)
⚠️ WARN Check if each glyph has the recommended amount of contours. (contour_count)
  • ⚠️ WARN This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are
    infered from the typical ammounts of contours observed in a
    large collection of reference font families. The divergences
    listed below may simply indicate a significantly different
    design on some of your glyphs. On the other hand, some of these
    may flag actual bugs in the font such as glyphs mapped to an
    incorrect codepoint. Please consider reviewing the design and
    codepoint assignment of these to make sure they are correct.

    The following glyphs do not have the recommended number of contours:

  • uniFF31 (U+FF31): found 3, expected one of: {2}
  • uniFF47 (U+FF47): found 3, expected one of: {2}
  • uni3059 (U+3059): found 1, expected one of: {2}
  • uni305A (U+305A): found 3, expected one of: {4}
  • uni305F (U+305F): found 2, expected one of: {3}
  • uni3072 (U+3072): found 2, expected one of: {1}
  • uni3082 (U+3082): found 2, expected one of: {1}
  • uni3085 (U+3085): found 3, expected one of: {2, 4}
  • uni308B (U+308B): found 1, expected one of: {2}
    ... and 14 others [code: contour-count]
⚠️ WARN Ensure files are not too large. (file_size)
  • ⚠️ WARN Font file is 4.90 MB; ideally it should be less than 1.05 MB [code: large-font]
⚠️ WARN Does GPOS table have kerning information? (gpos_kerning_info)
  • ⚠️ WARN GPOS table lacks kerning information. [code: lacks-kern-info]
⚠️ WARN Are there caret positions declared for every ligature? (ligature_carets)
  • ⚠️ WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
⚠️ WARN Check math signs have the same width. (math_signs_width)
  • ⚠️ WARN The most common width is 750 among a set of 12 math glyphs.
    The following math glyphs have a different width, though:
    width=400: uni2212
    width=1000: uni3012, uni2266
    width=780: uni003C, uni003E
    width=580: uni00AC [code: width-outliers]
⚠️ WARN Ensure indic fonts have the Indian Rupee Sign glyph. (rupee)
  • ⚠️ WARN Font is missing the Indian Rupee Sign glyph. Please add a glyph for Indian Rupee Sign (₹) at codepoint U+20B9. [code: missing-rupee]
⚠️ WARN Glyph names are all valid? (valid_glyphnames)
  • ⚠️ WARN The following glyph names are too long: "katakanahiraganavoicedsoundmod.half.rotat, katakanahiraganasemivoicedsoundmod.half.rotat, katakanahiraganaprolongedsoundmod.half.rotat" [code: legacy-long-names]

  • ⚠️ WARN Glyph 0x0020 is called uni0020; must be named 'space'. [code: not-recommended-0020]

⚠️ WARN Font has correct separator glyphs? (googlefonts/separator_glyphs)
  • ⚠️ WARN The following separator glyphs are missing:
  • U+2028
  • U+2029 [code: missing-separator-glyphs]
⚠️ WARN Ensure dotted circle glyph is present and can attach marks. (dotted_circle)
  • ⚠️ WARN No dotted circle glyph present [code: missing-dotted-circle]
⚠️ WARN Ensure soft_dotted characters lose their dot when combined with marks that replace the dot. (soft_dotted)
  • ⚠️ WARN The dot of soft dotted characters used in orthographies must disappear in the following strings: * j̈
  • i̋The dot of soft dotted characters should disappear in other cases, for example: * j̨̋
  • j̨̇
  • ǰ̨
  • j̨̈
  • j̨̅
  • j̨́
  • j̨̆

  • ... and 12 others [code: soft-dotted]
⚠️ WARN Do any segments have colinear vectors? (outline_colinear_vectors)
  • ⚠️ WARN The following glyphs have colinear vectors:
  • uni0071 (U+0071): Line { p0: (527.0, -144.0), p1: (528.0, 459.0) } -> Line { p0: (528.0, 459.0), p1: (528.0, 520.0) }
  • uni0416 (U+0416): Line { p0: (580.0, 369.0), p1: (719.0, 142.0) } -> Line { p0: (719.0, 142.0), p1: (769.0, 61.0) }
  • uni55AB (U+55AB): Line { p0: (402.0, 820.0), p1: (405.0, 692.0) } -> Line { p0: (405.0, 692.0), p1: (405.0, 688.0) }
  • uni53CA (U+53CA): Line { p0: (531.0, 554.0), p1: (513.0, 516.0) } -> Line { p0: (513.0, 516.0), p1: (509.0, 508.0) }
  • uni96C7 (U+96C7): Line { p0: (148.0, 779.0), p1: (149.0, 658.0) } -> Line { p0: (149.0, 658.0), p1: (149.0, 440.0) }
  • uni5F31 (U+5F31): Line { p0: (791.0, 347.0), p1: (790.0, 330.0) } -> Line { p0: (790.0, 330.0), p1: (788.0, 251.0) }
  • uni821C (U+821C): Line { p0: (481.0, 343.0), p1: (491.0, 384.0) } -> Line { p0: (491.0, 384.0), p1: (497.0, 407.0) }
  • uni5C3B (U+5C3B): Line { p0: (751.0, 38.0), p1: (751.0, 40.0) } -> Line { p0: (751.0, 40.0), p1: (763.0, 368.0) }
  • uni5C3B (U+5C3B): Line { p0: (642.0, 320.0), p1: (633.0, 34.0) } -> Line { p0: (633.0, 34.0), p1: (633.0, 30.0) }
    ... and 59 others [code: found-colinear-vectors]
⚠️ WARN Check the direction of the outermost contour in each glyph (outline_direction)
  • ⚠️ WARN The following glyphs have a counter-clockwise outer contour:
  • .notdef has a counter-clockwise outer contour
  • uni0021 (U+0021) has a counter-clockwise outer contour
  • uni0021 (U+0021) has a counter-clockwise outer contour
  • uni0022 (U+0022) has a counter-clockwise outer contour
  • uni0022 (U+0022) has a counter-clockwise outer contour
  • uni0023 (U+0023) has a counter-clockwise outer contour
  • uni0024 (U+0024) has a counter-clockwise outer contour
  • uni0025 (U+0025) has a counter-clockwise outer contour
  • uni0025 (U+0025) has a counter-clockwise outer contour
    ... and 30187 others [code: ccw-outer-contour]
⚠️ WARN Do outlines contain any jaggy segments? (outline_jaggy_segments)
  • ⚠️ WARN The following glyphs have jaggy segments:
  • uni0072 (U+0072): Line(Line { p0: (226.0, 325.0), p1: (226.0, 324.0) })/Quad(QuadBez { p0: (226.0, 324.0), p1: (232.0, 363.0), p2: (251.5, 403.5) }) = 8.746162262555254
  • uni004D.half: Line(Line { p0: (108.0, 50.0), p1: (108.0, 579.0) })/Quad(QuadBez { p0: (108.0, 579.0), p1: (128.0, 459.0), p2: (146.5, 339.0) }) = 9.46232220802565
  • uni004D.half: Quad(QuadBez { p0: (316.5, 333.5), p1: (342.0, 468.0), p2: (366.0, 603.0) })/Line(Line { p0: (366.0, 603.0), p1: (366.0, 54.0) }) = 10.08059798754231
  • uni0057.half: Quad(QuadBez { p0: (374.5, 332.0), p1: (370.0, 249.0), p2: (365.0, 166.0) })/Quad(QuadBez { p0: (365.0, 166.0), p1: (351.0, 285.0), p2: (338.0, 404.5) }) = 10.15722365962214
  • uni0057.half: Quad(QuadBez { p0: (171.0, 213.0), p1: (166.0, 178.0), p2: (164.0, 166.0) })/Quad(QuadBez { p0: (164.0, 166.0), p1: (159.0, 243.0), p2: (154.5, 320.0) }) = 13.17761131345436
  • uni308C.half: Quad(QuadBez { p0: (96.0, 245.0), p1: (109.0, 293.0), p2: (119.0, 340.0) })/Line(Line { p0: (119.0, 340.0), p1: (117.0, -10.0) }) = 11.684077495521025
  • uni308F.half: Quad(QuadBez { p0: (123.0, 245.0), p1: (135.0, 294.0), p2: (147.0, 340.0) })/Line(Line { p0: (147.0, 340.0), p1: (145.0, -10.0) }) = 14.293473097787261
  • uni308E.half: Quad(QuadBez { p0: (159.0, 218.0), p1: (166.0, 244.0), p2: (168.0, 252.0) })/Line(Line { p0: (168.0, 252.0), p1: (165.0, -28.0) }) = 13.422383604817174
  • uniFF5B (U+FF5B): Quad(QuadBez { p0: (723.5, 366.0), p1: (696.0, 380.0), p2: (664.0, 382.0) })/Quad(QuadBez { p0: (664.0, 382.0), p1: (696.0, 384.0), p2: (723.5, 397.5) }) = 7.152668749994792
    ... and 536 others [code: found-jaggy-segments]
⚠️ WARN Check there are no overlapping path segments (overlapping_path_segments)
  • ⚠️ WARN The following glyphs have overlapping path segments:
  • uni6BCB (U+6BCB): Quad(QuadBez { p0: (376.0, 141.0), p1: (376.0, 141.0), p2: (376.0, 140.5) }) has the same coordinates as a previous segment.
  • uni7FAF (U+7FAF): Quad(QuadBez { p0: (237.0, 615.0), p1: (254.0, 669.0), p2: (267.5, 723.0) }) has the same coordinates as a previous segment.
  • uni7FAF (U+7FAF): Quad(QuadBez { p0: (267.5, 723.0), p1: (281.0, 777.0), p2: (295.0, 832.0) }) has the same coordinates as a previous segment. [code: overlapping-path-segments]
⚠️ WARN Do outlines contain any semi-vertical or semi-horizontal lines? (outline_semi_vertical)
  • ⚠️ WARN The following glyphs have semi-vertical/semi-horizontal lines:
  • uni0049 (U+0049): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
  • uni0059 (U+0059): Line(Line { p0: (273.0, 267.0), p1: (272.0, 84.0) })
  • uni0071 (U+0071): Line(Line { p0: (527.0, -144.0), p1: (528.0, 459.0) })
  • uni0074 (U+0074): Line(Line { p0: (241.0, 83.0), p1: (243.0, 469.0) })
  • uni00C6 (U+00C6): Line(Line { p0: (456.0, 328.0), p1: (457.0, 83.0) })
  • uni0152 (U+0152): Line(Line { p0: (493.0, 683.0), p1: (494.0, 87.0) })
  • uni00CC (U+00CC): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
  • uni00CD (U+00CD): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
  • uni00CE (U+00CE): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
    ... and 2564 others [code: found-semi-vertical]
ℹ️ INFO Checking OS/2 fsSelection value. (opentype/xavgcharwidth)
ℹ️ INFO Show hinting filesize impact. (hinting_impact)
  • ℹ️ INFO Hinting filesize impact:
UoqMunThenKhung-Regular.ttf
Dehinted Size 4901664
Hinted Size 4901688
Increase 24
Change 0.0 %
ℹ️ INFO Font contains all required tables? (required_tables)
  • ℹ️ INFO This font contains the following optional tables:

    loca
    prep
    BASE
    GSUB
    gasp
    vhea
    vmtx [code: optional-tables]

ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? (googlefonts/gasp)
  • ℹ️ INFO These are the ppm ranges declared on the gasp table:
PPM <= 65535- Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®
[code: ranges]
ℹ️ INFO Ensure fonts have ScriptLangTags declared on the 'meta' table. (googlefonts/meta/script_lang_tags)
  • ℹ️ INFO "zh, Hant, zh-Hant, nan, hak, yue, nan-Latn, nan-Latn-pehoeji, nan-Latn-tailo, Bopo, Hanb" [code: dlng-tag]

  • ℹ️ INFO "zh, Hans, Hant, zh-Hans, zh-Hant, nan, hak, yue, Bopo, Hanb, zh-Latn, zh-Latn-pinyin, nan-Latn, nan-Latn-pehoeji, nan-Latn-tailo, Latn, Cyrl, Grek" [code: slng-tag]

ℹ️ INFO Font has old ttfautohint applied? (googlefonts/old_ttfautohint)
  • ℹ️ INFO Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: Version 1.197 [code: version-not-detected]
[5] ofl/uoqmunthenkhung
🔥 FAIL Check for presence of an ARTICLE.en_us.html file (googlefonts/description/has_article)
  • 🔥 FAIL This font doesn't have an ARTICLE.en_us.html file. [code: missing-article]
🔥 FAIL Check font has a license. (googlefonts/family/has_license)
  • 🔥 FAIL No license file was found. Please add an OFL.txt or a LICENSE.txt file. [code: no-license]
🔥 FAIL Check Google Fonts glyph coverage. (googlefonts/glyph_coverage)
  • 🔥 FAIL ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf missing required codepoints:
  • 0x02D9
  • 0x0113
  • 0x030A
  • 0x015B
  • 0x016A
  • 0x0117
  • 0x0130
  • 0x0327
  • 0x0147
    ... and 96 others [code: missing-codepoints]
⚠️ WARN Check for codepoints not covered by METADATA subsets. (googlefonts/metadata/unreachable_subsetting)
  • ⚠️ WARN ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf: The following codepoints supported by the font are not covered by any subsets defined in the font's metadata file, and will never be served. You can solve this by either manually adding additional subset declarations to METADATA.pb, or by editing the glyphset definitions.
  • U+0305 COMBINING OVERLINE: try adding one of: coptic, gothic, math, elbasan, glagolitic
  • U+0306 COMBINING BREVE: try adding one of: old-permic, tifinagh
  • U+0307 COMBINING DOT ABOVE: try adding one of: duployan, malayalam, math, syriac, todhri, tifinagh, tai-le, canadian-aboriginal, hebrew, old-permic, coptic
  • U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: osage, cherokee
  • U+030C COMBINING CARON: try adding one of: tai-le, cherokee
  • U+0391 GREEK CAPITAL LETTER ALPHA: try adding one of: math, greek, elbasan
  • U+0392 GREEK CAPITAL LETTER BETA: try adding one of: math, elbasan, greek
  • U+0393 GREEK CAPITAL LETTER GAMMA: try adding one of: elbasan, math, greek
  • U+0394 GREEK CAPITAL LETTER DELTA: try adding one of: math, elbasan, greek
    ... and 244 others

Or you can add the above codepoints to one of the subsets supported by the font: chinese-hongkong, chinese-simplified, chinese-traditional, cyrillic, japanese, latin-ext, latin, symbols2 [code: unreachable-subsetting]

ℹ️ INFO Check axis ordering on the STAT table. (googlefonts/STAT/axis_order)
  • ℹ️ INFO All of the fonts lack a STAT table. [code: summary]

Summary

⏩ SKIP 🔥 FAIL ⚠️ WARN ℹ️ INFO 💥 ERROR ✅ PASS
63 9 19 8 2 86
35% 5% 11% 4% 1% 48%

@github-actions

Copy link
Copy Markdown
Contributor

FontSpector report

fontspector version: 1.0.2

Checks with FATAL results

These must be addressed first.

[2] ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf
💥 ERROR Version number has increased since previous release on Google Fonts? (googlefonts/version_bump)
  • 💥 ERROR Error: Failed to find fileRefs in manifest: Object {"error": String("Unable to find family: UoqMunThenKhung")}
💥 ERROR Check if the vertical metrics of a CJK family are similar to the same family hosted on Google Fonts. (googlefonts/cjk_vertical_metrics_regressions)
  • 💥 ERROR Error: Could not get remote style: Failed to find fileRefs in manifest: Object {"error": String("Unable to find family: UoqMunThenKhung")}

All other checks

[24] ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf
🔥 FAIL Check family name for GF Guide compliance. (googlefonts/name/family_name_compliance)
  • 🔥 FAIL "UoqMunThenKhung" is a CamelCased name. To solve this, simply use spaces instead in the font name. [code: camelcase]
🔥 FAIL Check font follows the Google Fonts CJK vertical metric schema (googlefonts/cjk_vertical_metrics)
  • 🔥 FAIL OS/2 fsSelection bit 7 must be disabled [code: bad-fselection-bit7]

  • 🔥 FAIL OS/2.sTypoAscender is 941; it should be 880 [code: bad-OS/2.sTypoAscender]

  • 🔥 FAIL OS/2.sTypoDescender is -187; it should be -120 [code: bad-OS/2.sTypoDescender]

  • 🔥 FAIL hhea.ascent must match OS/2.usWinAscent [code: ascent-mismatch]

  • 🔥 FAIL hhea.descent must match absolute value of OS/2.usWinDescent [code: descent-mismatch]

⚠️ WARN Does the font contain chws and vchw features? (cjk_chws_feature)
⚠️ WARN Check if each glyph has the recommended amount of contours. (contour_count)
  • ⚠️ WARN This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are
    infered from the typical ammounts of contours observed in a
    large collection of reference font families. The divergences
    listed below may simply indicate a significantly different
    design on some of your glyphs. On the other hand, some of these
    may flag actual bugs in the font such as glyphs mapped to an
    incorrect codepoint. Please consider reviewing the design and
    codepoint assignment of these to make sure they are correct.

    The following glyphs do not have the recommended number of contours:

  • uniFF31 (U+FF31): found 3, expected one of: {2}
  • uniFF47 (U+FF47): found 3, expected one of: {2}
  • uni3059 (U+3059): found 1, expected one of: {2}
  • uni305A (U+305A): found 3, expected one of: {4}
  • uni305F (U+305F): found 2, expected one of: {3}
  • uni3072 (U+3072): found 2, expected one of: {1}
  • uni3082 (U+3082): found 2, expected one of: {1}
  • uni3085 (U+3085): found 3, expected one of: {4, 2}
  • uni308B (U+308B): found 1, expected one of: {2}
    ... and 14 others [code: contour-count]
⚠️ WARN Ensure files are not too large. (file_size)
  • ⚠️ WARN Font file is 4.90 MB; ideally it should be less than 1.05 MB [code: large-font]
⚠️ WARN Does GPOS table have kerning information? (gpos_kerning_info)
  • ⚠️ WARN GPOS table lacks kerning information. [code: lacks-kern-info]
⚠️ WARN Are there caret positions declared for every ligature? (ligature_carets)
  • ⚠️ WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
⚠️ WARN Check math signs have the same width. (math_signs_width)
  • ⚠️ WARN The most common width is 750 among a set of 12 math glyphs.
    The following math glyphs have a different width, though:
    width=400: uni2212
    width=780: uni003C, uni003E
    width=580: uni00AC
    width=1000: uni2266, uni3012 [code: width-outliers]
⚠️ WARN Ensure indic fonts have the Indian Rupee Sign glyph. (rupee)
  • ⚠️ WARN Font is missing the Indian Rupee Sign glyph. Please add a glyph for Indian Rupee Sign (₹) at codepoint U+20B9. [code: missing-rupee]
⚠️ WARN Glyph names are all valid? (valid_glyphnames)
  • ⚠️ WARN The following glyph names are too long: "katakanahiraganasemivoicedsoundmod.half.rotat, katakanahiraganaprolongedsoundmod.half.rotat, katakanahiraganavoicedsoundmod.half.rotat" [code: legacy-long-names]

  • ⚠️ WARN Glyph 0x0020 is called uni0020; must be named 'space'. [code: not-recommended-0020]

⚠️ WARN Font has correct separator glyphs? (googlefonts/separator_glyphs)
  • ⚠️ WARN The following separator glyphs are missing:
  • U+2028
  • U+2029 [code: missing-separator-glyphs]
⚠️ WARN Ensure dotted circle glyph is present and can attach marks. (dotted_circle)
  • ⚠️ WARN No dotted circle glyph present [code: missing-dotted-circle]
⚠️ WARN Ensure soft_dotted characters lose their dot when combined with marks that replace the dot. (soft_dotted)
  • ⚠️ WARN The dot of soft dotted characters used in orthographies must disappear in the following strings: * i̋
  • j̈The dot of soft dotted characters should disappear in other cases, for example: * į̋
  • į̇
  • į̆
  • į̅
  • į̌

  • ... and 12 others [code: soft-dotted]
⚠️ WARN Do any segments have colinear vectors? (outline_colinear_vectors)
  • ⚠️ WARN The following glyphs have colinear vectors:
  • uni0071 (U+0071): Line { p0: (527.0, -144.0), p1: (528.0, 459.0) } -> Line { p0: (528.0, 459.0), p1: (528.0, 520.0) }
  • uni0416 (U+0416): Line { p0: (580.0, 369.0), p1: (719.0, 142.0) } -> Line { p0: (719.0, 142.0), p1: (769.0, 61.0) }
  • uni55AB (U+55AB): Line { p0: (402.0, 820.0), p1: (405.0, 692.0) } -> Line { p0: (405.0, 692.0), p1: (405.0, 688.0) }
  • uni53CA (U+53CA): Line { p0: (531.0, 554.0), p1: (513.0, 516.0) } -> Line { p0: (513.0, 516.0), p1: (509.0, 508.0) }
  • uni96C7 (U+96C7): Line { p0: (148.0, 779.0), p1: (149.0, 658.0) } -> Line { p0: (149.0, 658.0), p1: (149.0, 440.0) }
  • uni5F31 (U+5F31): Line { p0: (791.0, 347.0), p1: (790.0, 330.0) } -> Line { p0: (790.0, 330.0), p1: (788.0, 251.0) }
  • uni821C (U+821C): Line { p0: (481.0, 343.0), p1: (491.0, 384.0) } -> Line { p0: (491.0, 384.0), p1: (497.0, 407.0) }
  • uni5C3B (U+5C3B): Line { p0: (751.0, 38.0), p1: (751.0, 40.0) } -> Line { p0: (751.0, 40.0), p1: (763.0, 368.0) }
  • uni5C3B (U+5C3B): Line { p0: (642.0, 320.0), p1: (633.0, 34.0) } -> Line { p0: (633.0, 34.0), p1: (633.0, 30.0) }
    ... and 59 others [code: found-colinear-vectors]
⚠️ WARN Check the direction of the outermost contour in each glyph (outline_direction)
  • ⚠️ WARN The following glyphs have a counter-clockwise outer contour:
  • .notdef has a counter-clockwise outer contour
  • uni0021 (U+0021) has a counter-clockwise outer contour
  • uni0021 (U+0021) has a counter-clockwise outer contour
  • uni0022 (U+0022) has a counter-clockwise outer contour
  • uni0022 (U+0022) has a counter-clockwise outer contour
  • uni0023 (U+0023) has a counter-clockwise outer contour
  • uni0024 (U+0024) has a counter-clockwise outer contour
  • uni0025 (U+0025) has a counter-clockwise outer contour
  • uni0025 (U+0025) has a counter-clockwise outer contour
    ... and 30187 others [code: ccw-outer-contour]
⚠️ WARN Do outlines contain any jaggy segments? (outline_jaggy_segments)
  • ⚠️ WARN The following glyphs have jaggy segments:
  • uni0072 (U+0072): Line(Line { p0: (226.0, 325.0), p1: (226.0, 324.0) })/Quad(QuadBez { p0: (226.0, 324.0), p1: (232.0, 363.0), p2: (251.5, 403.5) }) = 8.746162262555254
  • uni004D.half: Line(Line { p0: (108.0, 50.0), p1: (108.0, 579.0) })/Quad(QuadBez { p0: (108.0, 579.0), p1: (128.0, 459.0), p2: (146.5, 339.0) }) = 9.46232220802565
  • uni004D.half: Quad(QuadBez { p0: (316.5, 333.5), p1: (342.0, 468.0), p2: (366.0, 603.0) })/Line(Line { p0: (366.0, 603.0), p1: (366.0, 54.0) }) = 10.08059798754231
  • uni0057.half: Quad(QuadBez { p0: (374.5, 332.0), p1: (370.0, 249.0), p2: (365.0, 166.0) })/Quad(QuadBez { p0: (365.0, 166.0), p1: (351.0, 285.0), p2: (338.0, 404.5) }) = 10.15722365962214
  • uni0057.half: Quad(QuadBez { p0: (171.0, 213.0), p1: (166.0, 178.0), p2: (164.0, 166.0) })/Quad(QuadBez { p0: (164.0, 166.0), p1: (159.0, 243.0), p2: (154.5, 320.0) }) = 13.17761131345436
  • uni308C.half: Quad(QuadBez { p0: (96.0, 245.0), p1: (109.0, 293.0), p2: (119.0, 340.0) })/Line(Line { p0: (119.0, 340.0), p1: (117.0, -10.0) }) = 11.684077495521025
  • uni308F.half: Quad(QuadBez { p0: (123.0, 245.0), p1: (135.0, 294.0), p2: (147.0, 340.0) })/Line(Line { p0: (147.0, 340.0), p1: (145.0, -10.0) }) = 14.293473097787261
  • uni308E.half: Quad(QuadBez { p0: (159.0, 218.0), p1: (166.0, 244.0), p2: (168.0, 252.0) })/Line(Line { p0: (168.0, 252.0), p1: (165.0, -28.0) }) = 13.422383604817174
  • uniFF5B (U+FF5B): Quad(QuadBez { p0: (723.5, 366.0), p1: (696.0, 380.0), p2: (664.0, 382.0) })/Quad(QuadBez { p0: (664.0, 382.0), p1: (696.0, 384.0), p2: (723.5, 397.5) }) = 7.152668749994792
    ... and 536 others [code: found-jaggy-segments]
⚠️ WARN Check there are no overlapping path segments (overlapping_path_segments)
  • ⚠️ WARN The following glyphs have overlapping path segments:
  • uni6BCB (U+6BCB): Quad(QuadBez { p0: (376.0, 141.0), p1: (376.0, 141.0), p2: (376.0, 140.5) }) has the same coordinates as a previous segment.
  • uni7FAF (U+7FAF): Quad(QuadBez { p0: (237.0, 615.0), p1: (254.0, 669.0), p2: (267.5, 723.0) }) has the same coordinates as a previous segment.
  • uni7FAF (U+7FAF): Quad(QuadBez { p0: (267.5, 723.0), p1: (281.0, 777.0), p2: (295.0, 832.0) }) has the same coordinates as a previous segment. [code: overlapping-path-segments]
⚠️ WARN Do outlines contain any semi-vertical or semi-horizontal lines? (outline_semi_vertical)
  • ⚠️ WARN The following glyphs have semi-vertical/semi-horizontal lines:
  • uni0049 (U+0049): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
  • uni0059 (U+0059): Line(Line { p0: (273.0, 267.0), p1: (272.0, 84.0) })
  • uni0071 (U+0071): Line(Line { p0: (527.0, -144.0), p1: (528.0, 459.0) })
  • uni0074 (U+0074): Line(Line { p0: (241.0, 83.0), p1: (243.0, 469.0) })
  • uni00C6 (U+00C6): Line(Line { p0: (456.0, 328.0), p1: (457.0, 83.0) })
  • uni0152 (U+0152): Line(Line { p0: (493.0, 683.0), p1: (494.0, 87.0) })
  • uni00CC (U+00CC): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
  • uni00CD (U+00CD): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
  • uni00CE (U+00CE): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
    ... and 2564 others [code: found-semi-vertical]
ℹ️ INFO Checking OS/2 fsSelection value. (opentype/xavgcharwidth)
ℹ️ INFO Show hinting filesize impact. (hinting_impact)
  • ℹ️ INFO Hinting filesize impact:
UoqMunThenKhung-Regular.ttf
Dehinted Size 4901664
Hinted Size 4901688
Increase 24
Change 0.0 %
ℹ️ INFO Font contains all required tables? (required_tables)
  • ℹ️ INFO This font contains the following optional tables:

    loca
    prep
    BASE
    GSUB
    gasp
    vhea
    vmtx [code: optional-tables]

ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? (googlefonts/gasp)
  • ℹ️ INFO These are the ppm ranges declared on the gasp table:
PPM <= 65535- Use grid-fitting - Use grayscale rendering - Use gridfitting with ClearType symmetric smoothing - Use smoothing along multiple axes with ClearType®
[code: ranges]
ℹ️ INFO Ensure fonts have ScriptLangTags declared on the 'meta' table. (googlefonts/meta/script_lang_tags)
  • ℹ️ INFO "zh, Hant, zh-Hant, nan, hak, yue, nan-Latn, nan-Latn-pehoeji, nan-Latn-tailo, Bopo, Hanb" [code: dlng-tag]

  • ℹ️ INFO "zh, Hans, Hant, zh-Hans, zh-Hant, nan, hak, yue, Bopo, Hanb, zh-Latn, zh-Latn-pinyin, nan-Latn, nan-Latn-pehoeji, nan-Latn-tailo, Latn, Cyrl, Grek" [code: slng-tag]

ℹ️ INFO Font has old ttfautohint applied? (googlefonts/old_ttfautohint)
  • ℹ️ INFO Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: Version 1.197 [code: version-not-detected]
[5] ofl/uoqmunthenkhung
🔥 FAIL Check for presence of an ARTICLE.en_us.html file (googlefonts/description/has_article)
  • 🔥 FAIL This font doesn't have an ARTICLE.en_us.html file. [code: missing-article]
🔥 FAIL Check font has a license. (googlefonts/family/has_license)
  • 🔥 FAIL No license file was found. Please add an OFL.txt or a LICENSE.txt file. [code: no-license]
🔥 FAIL Check Google Fonts glyph coverage. (googlefonts/glyph_coverage)
  • 🔥 FAIL ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf missing required codepoints:
  • 0x0137
  • 0x0172
  • 0x02D9
  • 0x013D
  • 0x016E
  • 0x0303
  • 0x0147
  • 0x0158
  • 0x0106
    ... and 96 others [code: missing-codepoints]
⚠️ WARN Check for codepoints not covered by METADATA subsets. (googlefonts/metadata/unreachable_subsetting)
  • ⚠️ WARN ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf: The following codepoints supported by the font are not covered by any subsets defined in the font's metadata file, and will never be served. You can solve this by either manually adding additional subset declarations to METADATA.pb, or by editing the glyphset definitions.
  • U+0305 COMBINING OVERLINE: try adding one of: glagolitic, coptic, elbasan, gothic, math
  • U+0306 COMBINING BREVE: try adding one of: old-permic, tifinagh
  • U+0307 COMBINING DOT ABOVE: try adding one of: coptic, math, old-permic, canadian-aboriginal, malayalam, tai-le, syriac, duployan, tifinagh, todhri, hebrew
  • U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: cherokee, osage
  • U+030C COMBINING CARON: try adding one of: cherokee, tai-le
  • U+0391 GREEK CAPITAL LETTER ALPHA: try adding one of: greek, math, elbasan
  • U+0392 GREEK CAPITAL LETTER BETA: try adding one of: elbasan, greek, math
  • U+0393 GREEK CAPITAL LETTER GAMMA: try adding one of: math, greek, elbasan
  • U+0394 GREEK CAPITAL LETTER DELTA: try adding one of: elbasan, math, greek
    ... and 244 others

Or you can add the above codepoints to one of the subsets supported by the font: chinese-hongkong, chinese-simplified, chinese-traditional, cyrillic, japanese, latin-ext, latin, symbols2 [code: unreachable-subsetting]

ℹ️ INFO Check axis ordering on the STAT table. (googlefonts/STAT/axis_order)
  • ℹ️ INFO All of the fonts lack a STAT table. [code: summary]

Summary

ℹ️ INFO 💥 ERROR ✅ PASS ⚠️ WARN ⏩ SKIP 🔥 FAIL
8 2 86 19 63 9
4% 1% 48% 11% 35% 5%

@emmamarichal emmamarichal removed the -- Needs Upstream Resolution Upstream fix required before moving forward label Jun 5, 2025
@github-actions

Copy link
Copy Markdown
Contributor

FontSpector report

fontspector version: 1.0.2

Checks with FATAL results

These must be addressed first.

[1] ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf
💥 ERROR Check if the vertical metrics of a CJK family are similar to the same family hosted on Google Fonts. (googlefonts/cjk_vertical_metrics_regressions)
  • 💥 ERROR Error: Could not get remote style: Failed to find fileRefs in manifest: Object {"error": String("Unable to find family: UoqMunThenKhung")}

All other checks

[24] ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf
🔥 FAIL Check family name for GF Guide compliance. (googlefonts/name/family_name_compliance)
  • 🔥 FAIL "UoqMunThenKhung" is a CamelCased name. To solve this, simply use spaces instead in the font name. [code: camelcase]
🔥 FAIL Check font follows the Google Fonts CJK vertical metric schema (googlefonts/cjk_vertical_metrics)
  • 🔥 FAIL OS/2.usWinAscent is 949; it should be 915 [code: bad-OS/2.usWinAscent]

  • ℹ️ INFO Computed BASE table entries:

Baseline Computed BASE table
Horizontal icfb -82 -97
Horizontal icft 825 851
Horizontal ideo -128 -123
Horizontal idtp 871 N/A
Horizontal romn 0 0
Vertical icfb 25 26
Vertical icft 978 974
Vertical ideo 0 0
Vertical idtp 1000 N/A
Vertical romn 128 123
⚠️ WARN Does the font contain chws and vchw features? (cjk_chws_feature)
⚠️ WARN Check if each glyph has the recommended amount of contours. (contour_count)
  • ⚠️ WARN This check inspects the glyph outlines and detects the total number of contours in each of them. The expected values are
    infered from the typical ammounts of contours observed in a
    large collection of reference font families. The divergences
    listed below may simply indicate a significantly different
    design on some of your glyphs. On the other hand, some of these
    may flag actual bugs in the font such as glyphs mapped to an
    incorrect codepoint. Please consider reviewing the design and
    codepoint assignment of these to make sure they are correct.

    The following glyphs do not have the recommended number of contours:

  • uniFF31 (U+FF31): found 3, expected one of: {2}
  • uniFF47 (U+FF47): found 3, expected one of: {2}
  • uni3059 (U+3059): found 1, expected one of: {2}
  • uni305A (U+305A): found 3, expected one of: {4}
  • uni305F (U+305F): found 2, expected one of: {3}
  • uni3072 (U+3072): found 2, expected one of: {1}
  • uni3082 (U+3082): found 2, expected one of: {1}
  • uni3085 (U+3085): found 3, expected one of: {4, 2}
  • uni308B (U+308B): found 1, expected one of: {2}
    ... and 14 others [code: contour-count]
⚠️ WARN Ensure files are not too large. (file_size)
  • ⚠️ WARN Font file is 4.90 MB; ideally it should be less than 1.05 MB [code: large-font]
⚠️ WARN Does GPOS table have kerning information? (gpos_kerning_info)
  • ⚠️ WARN GPOS table lacks kerning information. [code: lacks-kern-info]
⚠️ WARN Are there caret positions declared for every ligature? (ligature_carets)
  • ⚠️ WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
⚠️ WARN Check math signs have the same width. (math_signs_width)
  • ⚠️ WARN The most common width is 750 among a set of 12 math glyphs.
    The following math glyphs have a different width, though:
    width=1000: uni3012, uni2266
    width=580: uni00AC
    width=400: uni2212
    width=780: uni003E, uni003C [code: width-outliers]
⚠️ WARN Ensure indic fonts have the Indian Rupee Sign glyph. (rupee)
  • ⚠️ WARN Font is missing the Indian Rupee Sign glyph. Please add a glyph for Indian Rupee Sign (₹) at codepoint U+20B9. [code: missing-rupee]
⚠️ WARN Glyph names are all valid? (valid_glyphnames)
  • ⚠️ WARN The following glyph names are too long: "katakanahiraganavoicedsoundmod.half.rotat, katakanahiraganasemivoicedsoundmod.half.rotat, katakanahiraganaprolongedsoundmod.half.rotat" [code: legacy-long-names]

  • ⚠️ WARN Glyph 0x0020 is called uni0020; must be named 'space'. [code: not-recommended-0020]

⚠️ WARN Font has correct separator glyphs? (googlefonts/separator_glyphs)
  • ⚠️ WARN The following separator glyphs are missing:
  • U+2028
  • U+2029 [code: missing-separator-glyphs]
⚠️ WARN Ensure dotted circle glyph is present and can attach marks. (dotted_circle)
  • ⚠️ WARN No dotted circle glyph present [code: missing-dotted-circle]
⚠️ WARN Ensure soft_dotted characters lose their dot when combined with marks that replace the dot. (soft_dotted)
  • ⚠️ WARN The dot of soft dotted characters used in orthographies must disappear in the following strings: * i̋
  • j́The dot of soft dotted characters should disappear in other cases, for example: * į̌
  • į̆
  • į̇
  • į̋
  • į̅

  • ... and 12 others [code: soft-dotted]
⚠️ WARN Do any segments have colinear vectors? (outline_colinear_vectors)
  • ⚠️ WARN The following glyphs have colinear vectors:
  • uni0071 (U+0071): Line { p0: (527.0, -144.0), p1: (528.0, 459.0) } -> Line { p0: (528.0, 459.0), p1: (528.0, 520.0) }
  • uni0416 (U+0416): Line { p0: (580.0, 369.0), p1: (719.0, 142.0) } -> Line { p0: (719.0, 142.0), p1: (769.0, 61.0) }
  • uni55AB (U+55AB): Line { p0: (402.0, 820.0), p1: (405.0, 692.0) } -> Line { p0: (405.0, 692.0), p1: (405.0, 688.0) }
  • uni53CA (U+53CA): Line { p0: (531.0, 554.0), p1: (513.0, 516.0) } -> Line { p0: (513.0, 516.0), p1: (509.0, 508.0) }
  • uni96C7 (U+96C7): Line { p0: (148.0, 779.0), p1: (149.0, 658.0) } -> Line { p0: (149.0, 658.0), p1: (149.0, 440.0) }
  • uni5F31 (U+5F31): Line { p0: (791.0, 347.0), p1: (790.0, 330.0) } -> Line { p0: (790.0, 330.0), p1: (788.0, 251.0) }
  • uni821C (U+821C): Line { p0: (481.0, 343.0), p1: (491.0, 384.0) } -> Line { p0: (491.0, 384.0), p1: (497.0, 407.0) }
  • uni5C3B (U+5C3B): Line { p0: (751.0, 38.0), p1: (751.0, 40.0) } -> Line { p0: (751.0, 40.0), p1: (763.0, 368.0) }
  • uni5C3B (U+5C3B): Line { p0: (642.0, 320.0), p1: (633.0, 34.0) } -> Line { p0: (633.0, 34.0), p1: (633.0, 30.0) }
    ... and 59 others [code: found-colinear-vectors]
⚠️ WARN Check the direction of the outermost contour in each glyph (outline_direction)
  • ⚠️ WARN The following glyphs have a counter-clockwise outer contour:
  • .notdef has a counter-clockwise outer contour
  • uni0021 (U+0021) has a counter-clockwise outer contour
  • uni0021 (U+0021) has a counter-clockwise outer contour
  • uni0022 (U+0022) has a counter-clockwise outer contour
  • uni0022 (U+0022) has a counter-clockwise outer contour
  • uni0023 (U+0023) has a counter-clockwise outer contour
  • uni0024 (U+0024) has a counter-clockwise outer contour
  • uni0025 (U+0025) has a counter-clockwise outer contour
  • uni0025 (U+0025) has a counter-clockwise outer contour
    ... and 30187 others [code: ccw-outer-contour]
⚠️ WARN Do outlines contain any jaggy segments? (outline_jaggy_segments)
  • ⚠️ WARN The following glyphs have jaggy segments:
  • uni0072 (U+0072): Line(Line { p0: (226.0, 325.0), p1: (226.0, 324.0) })/Quad(QuadBez { p0: (226.0, 324.0), p1: (232.0, 363.0), p2: (251.5, 403.5) }) = 8.746162262555254
  • uni004D.half: Line(Line { p0: (108.0, 50.0), p1: (108.0, 579.0) })/Quad(QuadBez { p0: (108.0, 579.0), p1: (128.0, 459.0), p2: (146.5, 339.0) }) = 9.46232220802565
  • uni004D.half: Quad(QuadBez { p0: (316.5, 333.5), p1: (342.0, 468.0), p2: (366.0, 603.0) })/Line(Line { p0: (366.0, 603.0), p1: (366.0, 54.0) }) = 10.08059798754231
  • uni0057.half: Quad(QuadBez { p0: (374.5, 332.0), p1: (370.0, 249.0), p2: (365.0, 166.0) })/Quad(QuadBez { p0: (365.0, 166.0), p1: (351.0, 285.0), p2: (338.0, 404.5) }) = 10.15722365962214
  • uni0057.half: Quad(QuadBez { p0: (171.0, 213.0), p1: (166.0, 178.0), p2: (164.0, 166.0) })/Quad(QuadBez { p0: (164.0, 166.0), p1: (159.0, 243.0), p2: (154.5, 320.0) }) = 13.17761131345436
  • uni308C.half: Quad(QuadBez { p0: (96.0, 245.0), p1: (109.0, 293.0), p2: (119.0, 340.0) })/Line(Line { p0: (119.0, 340.0), p1: (117.0, -10.0) }) = 11.684077495521025
  • uni308F.half: Quad(QuadBez { p0: (123.0, 245.0), p1: (135.0, 294.0), p2: (147.0, 340.0) })/Line(Line { p0: (147.0, 340.0), p1: (145.0, -10.0) }) = 14.293473097787261
  • uni308E.half: Quad(QuadBez { p0: (159.0, 218.0), p1: (166.0, 244.0), p2: (168.0, 252.0) })/Line(Line { p0: (168.0, 252.0), p1: (165.0, -28.0) }) = 13.422383604817174
  • uniFF5B (U+FF5B): Quad(QuadBez { p0: (723.5, 366.0), p1: (696.0, 380.0), p2: (664.0, 382.0) })/Quad(QuadBez { p0: (664.0, 382.0), p1: (696.0, 384.0), p2: (723.5, 397.5) }) = 7.152668749994792
    ... and 536 others [code: found-jaggy-segments]
⚠️ WARN Check there are no overlapping path segments (overlapping_path_segments)
  • ⚠️ WARN The following glyphs have overlapping path segments:
  • uni6BCB (U+6BCB): Quad(QuadBez { p0: (376.0, 141.0), p1: (376.0, 141.0), p2: (376.0, 140.5) }) has the same coordinates as a previous segment.
  • uni7FAF (U+7FAF): Quad(QuadBez { p0: (237.0, 615.0), p1: (254.0, 669.0), p2: (267.5, 723.0) }) has the same coordinates as a previous segment.
  • uni7FAF (U+7FAF): Quad(QuadBez { p0: (267.5, 723.0), p1: (281.0, 777.0), p2: (295.0, 832.0) }) has the same coordinates as a previous segment. [code: overlapping-path-segments]
⚠️ WARN Do outlines contain any semi-vertical or semi-horizontal lines? (outline_semi_vertical)
  • ⚠️ WARN The following glyphs have semi-vertical/semi-horizontal lines:
  • uni0049 (U+0049): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
  • uni0059 (U+0059): Line(Line { p0: (273.0, 267.0), p1: (272.0, 84.0) })
  • uni0071 (U+0071): Line(Line { p0: (527.0, -144.0), p1: (528.0, 459.0) })
  • uni0074 (U+0074): Line(Line { p0: (241.0, 83.0), p1: (243.0, 469.0) })
  • uni00C6 (U+00C6): Line(Line { p0: (456.0, 328.0), p1: (457.0, 83.0) })
  • uni0152 (U+0152): Line(Line { p0: (493.0, 683.0), p1: (494.0, 87.0) })
  • uni00CC (U+00CC): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
  • uni00CD (U+00CD): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
  • uni00CE (U+00CE): Line(Line { p0: (124.0, 653.0), p1: (123.0, 79.0) })
    ... and 2564 others [code: found-semi-vertical]
ℹ️ INFO Checking OS/2 fsSelection value. (opentype/xavgcharwidth)
ℹ️ INFO Show hinting filesize impact. (hinting_impact)
  • ℹ️ INFO Hinting filesize impact:
UoqMunThenKhung-Regular.ttf
Dehinted Size 4901664
Hinted Size 4901688
Increase 24
Change 0.0 %
ℹ️ INFO Font contains all required tables? (required_tables)
  • ℹ️ INFO This font contains the following optional tables:

    loca
    prep
    BASE
    GSUB
    gasp
    vhea
    vmtx [code: optional-tables]

ℹ️ INFO Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? (googlefonts/gasp)
  • ℹ️ INFO These are the ppm ranges declared on the gasp table:

| PPM <= 65535 | - Use grid-fitting |
| | - Use grayscale rendering |
| | - Use gridfitting with ClearType symmetric smoothing |

- Use smoothing along multiple axes with ClearType®
[code: ranges]
ℹ️ INFO Ensure fonts have ScriptLangTags declared on the 'meta' table. (googlefonts/meta/script_lang_tags)
  • ℹ️ INFO "zh, Hant, zh-Hant, nan, hak, yue, nan-Latn, nan-Latn-pehoeji, nan-Latn-tailo, Bopo, Hanb" [code: dlng-tag]

  • ℹ️ INFO "zh, Hans, Hant, zh-Hans, zh-Hant, nan, hak, yue, Bopo, Hanb, zh-Latn, zh-Latn-pinyin, nan-Latn, nan-Latn-pehoeji, nan-Latn-tailo, Latn, Cyrl, Grek" [code: slng-tag]

ℹ️ INFO Font has old ttfautohint applied? (googlefonts/old_ttfautohint)
  • ℹ️ INFO Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: Version 1.197 [code: version-not-detected]
[5] ofl/uoqmunthenkhung
🔥 FAIL Check font has a license. (googlefonts/family/has_license)
  • 🔥 FAIL No license file was found. Please add an OFL.txt or a LICENSE.txt file. [code: no-license]
🔥 FAIL Check Google Fonts glyph coverage. (googlefonts/glyph_coverage)
  • 🔥 FAIL ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf missing required codepoints:
  • 0x0154
  • 0x013B
  • 0x010C
  • 0x0127
  • 0x0102
  • 0x015F
  • 0x0151
  • 0x011F
  • 0x0164
    ... and 96 others [code: missing-codepoints]
⚠️ WARN Check for codepoints not covered by METADATA subsets. (googlefonts/metadata/unreachable_subsetting)
  • ⚠️ WARN ofl/uoqmunthenkhung/UoqMunThenKhung-Regular.ttf: The following codepoints supported by the font are not covered by any subsets defined in the font's metadata file, and will never be served. You can solve this by either manually adding additional subset declarations to METADATA.pb, or by editing the glyphset definitions.
  • U+0305 COMBINING OVERLINE: try adding one of: elbasan, math, glagolitic, coptic, gothic
  • U+0306 COMBINING BREVE: try adding one of: tifinagh, old-permic
  • U+0307 COMBINING DOT ABOVE: try adding one of: duployan, old-permic, syriac, tai-le, math, canadian-aboriginal, coptic, tifinagh, malayalam, hebrew, todhri
  • U+030B COMBINING DOUBLE ACUTE ACCENT: try adding one of: cherokee, osage
  • U+030C COMBINING CARON: try adding one of: tai-le, cherokee
  • U+0391 GREEK CAPITAL LETTER ALPHA: try adding one of: greek, elbasan, math
  • U+0392 GREEK CAPITAL LETTER BETA: try adding one of: greek, math, elbasan
  • U+0393 GREEK CAPITAL LETTER GAMMA: try adding one of: elbasan, greek, math
  • U+0394 GREEK CAPITAL LETTER DELTA: try adding one of: elbasan, greek, math
    ... and 244 others

Or you can add the above codepoints to one of the subsets supported by the font: chinese-hongkong, chinese-simplified, chinese-traditional, cyrillic, japanese, latin-ext, latin, symbols2 [code: unreachable-subsetting]

ℹ️ INFO Check for presence of an ARTICLE.en_us.html file (googlefonts/description/has_article)
  • ℹ️ INFO This font doesn't have an ARTICLE.en_us.html file. [code: missing-article]
ℹ️ INFO Check axis ordering on the STAT table. (googlefonts/STAT/axis_order)
  • ℹ️ INFO All of the fonts lack a STAT table. [code: summary]

Summary

⚠️ WARN ⏩ SKIP ✅ PASS 💥 ERROR 🔥 FAIL ℹ️ INFO
19 64 86 1 4 10
11% 36% 48% 1% 2% 6%

@emmamarichal emmamarichal merged commit fc7aefa into main Jun 11, 2025
15 of 17 checks passed
@emmamarichal emmamarichal deleted the UoqMunThenKhung branch June 11, 2025 12:43
@github-project-automation github-project-automation Bot moved this from PR GF to In Dev / PR Merged in Fonts Traffic Jam Jun 11, 2025
@emmamarichal emmamarichal moved this from In Dev / PR Merged to In Sandbox in Fonts Traffic Jam Jun 18, 2025
@m4rc1e m4rc1e moved this from In Sandbox to Live in Fonts Traffic Jam Jun 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

I New Font II CJK Chinese, Japanese, Korean scripts

Projects

Status: Live

Development

Successfully merging this pull request may close these issues.

Add 宇文天穹 UoqMunThenKhung

6 participants