Implement half-width glyph substitution #12
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
TR-B14 and TR-B15 specify that the MSZ control code can be used to make 1-6 rows(区) and alphanumeric, hiragana, and katakana characters halfwidth.
Previously, the MSZ was rendered by shrinking fullwidth characters, which halved the width of the stroke and rendered it terribly.
#9 improved alphanumeric rendering, but requires halfwidth fonts to display properly.
This PR adds the ability to use the hwid feature of a font and replace it with the halfwidth glyphs contained in the font.
This improves rendering if the font is supported.
Most fonts do not contain halfwidth glyphs at all or only partially. For example, MS Gothic and M+ do not contain any at all. Noto Sans and Source Han Sans contain only halfwidth alphanumeric characters.
Adobe-Japan1, a commonly used character collection, defines halfwidth hiragana, halfwidth katakana, and halfwidth symbols. Although it does not cover all of 1-6 rows, Adobe-Japan1 OpenType fonts contain glyphs for commonly used halfwidth characters. Also, even TrueType fonts that are not Adobe-Japan1, such as Meiryo, may contain halfwidth glyphs defined by Adobe-Japan1.
SetReplaceMSZFullWidthAlphanumeric(false)
,SetReplaceMSZFullWidthJapanese(false)
,SetReplaceMSZHalfWidthGlyph(false)
SetReplaceMSZFullWidthAlphanumeric(true)
,SetReplaceMSZFullWidthJapanese(true)
,SetReplaceMSZHalfWidthGlyph(false)
SetReplaceMSZHalfWidthGlyph(true)
SetReplaceMSZFullWidthAlphanumeric(false)
,SetReplaceMSZFullWidthJapanese(false)
,SetReplaceMSZHalfWidthGlyph(false)
SetReplaceMSZFullWidthAlphanumeric(true)
,SetReplaceMSZFullWidthJapanese(true)
,SetReplaceMSZHalfWidthGlyph(false)
SetReplaceMSZHalfWidthGlyph(true)