Glyph Naming in Kannada Type Design
1. What Is Glyph Naming?
In digital type design, every visible shape in a font whether it is a letter, numeral, punctuation mark, or ligature is stored as a glyph.
A glyph name is the unique identifier assigned to each of these shapes inside the font file.
For Latin fonts, names like A, B, a, or aacute are common.
For complex scripts such as Kannada, where letters can combine and reshape based on context, glyph names must go beyond single characters.
They describe both the base character and any attached components (vowel signs, viramas, or conjunct forms).
Glyph names are invisible to users, but they are crucial for type designers, developers, and software that processes text.
2. Why Glyph Naming Is Needed
Glyph naming ensures that:
-
Every shape is uniquely identifiable — useful for editing, exporting, and OpenType feature building.
-
Font editors and compilers (FontLab, GlyphsApp, FontForge, RoboFont) can correctly link each glyph to its Unicode codepoint.
-
Python scripts and OpenType features can target glyphs precisely without ambiguity.
-
Cross-software compatibility remains stable — a glyph named
kn_ka_iwill be recognized in any program that reads standard font data.
Without proper naming, automation and feature generation become confusing or error-prone, especially for Indian scripts with hundreds of contextual forms.
3. Is Unicode Not Enough?
Unicode defines codepoints — logical characters used by the operating system and text layout engines.
However, Unicode does not define how each character looks or how shapes interact visually.
For example:
| Word | Unicode Sequence | Glyphs Rendered |
|---|---|---|
| ಕ | U+0C95 | single consonant glyph |
| ಕಾ | U+0C95 U+0CBE | ka + matra_aa |
| ಕ್ಕ | U+0C95 U+0CCD U+0C95 | ka_halant + ka = conjunct |
To build those visual results, the font must contain glyphs such as kn_k, kn_k_v, kn_k_aa, and kn_k_k, which correspond to visual forms, not just Unicode points.
Thus, Unicode provides text meaning, but glyph naming defines text shaping.
4. My Approach to Kannada Glyph Naming
Designing a Kannada typeface involves managing hundreds of glyphs.
To keep the project structured, consistent, and scriptable, a systematic naming model was created.
The guiding principles were:
-
Use ASCII-only names (no Kannada characters in names).
-
Keep names short, clear, and consistent.
-
Ensure no conflict with English letters (so
a,i,uare avoided). -
Support automation and Python scripting in FontLab or GlyphsApp.
-
Allow expansion for ligatures and ottu (subjoined) forms.
5. The Prefix “kn_”
All Kannada glyphs begin with the prefix kn_
This guarantees no clash with Latin or other script glyphs.
Examples:
| Kannada | Glyph Name | Meaning |
|---|---|---|
| ಅ | kn_a |
Independent vowel a |
| ಆ | kn_aa |
Long vowel aa |
| ಕ | kn_k |
Base consonant ka |
| ಕ್ | kn_k_v |
ka with virama |
| ಕಾ | kn_k_aa |
ka + aa matra |
| ಕಿ | kn_k_i |
ka + i matra |
| ಕ್ಕ | kn_k_k |
conjunct (ka + ka) |
| ಕ್ಕ್ಕ | kn_k_k_k |
triple conjunct |
| ಕ್ಕ | kn_k_ottu |
ottu form (half ka) |
| ಕ್ಕ್ಕ |
kn_k_ottu2 |
second ottu |
This naming keeps the logic visible and expandable.
6. Structural Rules
Independent vowels
kn_a, kn_aa, kn_i, kn_ii, kn_u, kn_uu, kn_e, kn_ee, kn_ai, kn_o, kn_oo, kn_au
Consonants and halant
kn_k, kn_kh, kn_g, kn_gh, kn_h kn_k_v, kn_kh_v, kn_g_v, kn_gh_v, … , kn_h_v
Dependent vowel signs (matras)
kn_m_aa, kn_m_i, kn_m_ii, kn_m_u, kn_m_uu, kn_m_e, kn_m_ee, kn_m_ai, kn_m_o, kn_m_oo, kn_m_au
Consonant + Vowel combinations
Each consonant can combine with any matra:
kn_k_aa, kn_k_i, kn_k_ii, kn_k_u, kn_k_uu, kn_k_e, kn_k_ee, kn_k_ai, kn_k_o, kn_k_oo, kn_k_au
Ottu and Second Ottu
kn_k_ottu, kn_kh_ottu, kn_g_ottu, ...kn_k_ottu2, kn_kh_ottu2, kn_g_ottu2, ...
Conjuncts
kn_k_k, kn_k_kh, kn_t_t, kn_t_t_t, kn_n_dh, kn_sh_r
Numbers and Signs
kn_0, kn_1, kn_2, kn_3, kn_4, kn_5, kn_6, kn_7, kn_8, kn_9 kn_virama, kn_anuswara, kn_visarga
7. Why This Helps
-
Human-readable structure:
A designer can instantly see the logic —kn_k_iiclearly means “ka with long i”. -
Consistency across tools:
Works perfectly in FontLab, GlyphsApp, or FontForge. -
Predictable automation:
Scripts can iterate or generate glyphs using string operations. -
GSUB/GPOS feature building:
OpenType rules can target glyphs easily:lookup blwf { sub kn_k_v kn_k by kn_k_k; } blwf; -
Future proofing:
Thekn_namespace keeps the font safe in multi-script families (Latin + Kannada).
8. Python Scripting and Naming Significance
Python scripting is the backbone of automation in modern font editors.
Good naming allows scripts to understand and manipulate glyphs systematically.
Example:
font = fl.font
for g in font.glyphs:
if g.name.startswith("kn_k_"):
print("ka-family glyph:", g.name)
Or generating all CV forms:
bases = ["k","kh","g","gh","ch","j"]
matras = ["aa","i","ii","u","uu","e","ee","ai","o","oo","au"]
for b in bases:
for m in matras:
new = f"kn_{b}_{m}"
print("Expected glyph:", new)
OpenType feature scripts (GSUB, GPOS) can then use the same names.
The font and the script speak the same consistent language.
9. Conclusion
Glyph naming is the hidden backbone of every well-engineered Kannada font.
Unicode defines the characters; glyph naming defines how they come alive visually.
A well-structured system such as the kn_ model makes the design process more consistent, the code more predictable, and the collaboration between design and engineering seamless.
In a language as rich and dynamic as Kannada, thoughtful naming is not just organization —
it is clarity, automation, and professionalism combined.