Reading the badges
A badge on a font page is a claim, and a claim is only worth as much as whatever produced it. Ours are produced by a program that opens the font file and shapes text through it — no one types them in. Here is what each level means, what the Kurdish check tests, and where a badge stops promising anything.
Three levels, and the case with no badge
A language badge has three levels — verified, partial and none — but they are not all decided the same way, and that is the first thing to know. Kurdish is checked against a profile we wrote ourselves, which asks explicit questions and carries no score. Kurmanji, Arabic, Persian, Turkish and English are checked with shaperglot, which returns a score out of 100, and the level is simply the band that score falls in. So what a level means depends on which of the two produced it, and both are spelled out below.
There is a fourth case, and it is the one people misread. If the check could not run at all, we show no badge instead of a level. An absent badge means we have no result — not that the font failed.
Read a blank as unanswered. The font may set that language perfectly well; we simply have nothing we can stand behind, and we would rather say nothing than round a gap up to verified or down to none.
The badge comes from the font file, not from us
Every badge is produced by a program during ingestion. It opens the font binary itself — the sanitized copy our pipeline rebuilds from the original, which is also what the previews on the page are derived from — reads its character table, and shapes text through it. Nobody types a badge in by hand, and there is no field that could be filled in by hand. The file behind the download button is a different artefact again: the untouched original, which we never modify.
That means a designer's own claim carries no weight here, and neither does ours. If a README says a font covers Kurdish and the check disagrees, the check is what reaches the page.
It also means badges can change. When we find a hole in a check, we fix the check and run it again across the catalog, and a font that was verified before can come back partial. That has happened: a font we had published as verified for Kurdish dropped to partial when we corrected how the check shapes its probes. The check still ran and still had an answer — it was simply a lower one.
What the Kurdish check actually does
For Kurdish, three things must all hold. Every base letter of the Kurdish alphabet must be present in the font's character map, its cmap. A set of probes — real Kurdish words such as گرنگ and هەڤال — must shape into connected, contextual forms. And no probe may produce .notdef, the empty box a font emits when it has no glyph for something. A missing base letter, or a .notdef, is what makes the badge read none.
Proving the joining takes two passes. We shape each probe normally, then shape it again with the joining features init, medi, fina and isol switched off, and compare the two glyph runs. If they are identical, the font never produced a contextual form in the first place, and the badge drops to partial.
Every probe is shaped with the Kurdish language tag applied. That matters because an OpenType language system replaces the default feature list rather than adding to it, so a font can join Arabic correctly and still offer a Kurdish system with the joining features stripped out. Shaping without the tag would never see it, and a browser on a page marked lang="ckb" always applies it.
One Kurdish badge, and what it does not promise
Kurdish here is a single badge covering both Sorani and Badini. They are written with the same Arabic-script letter set and the same joining behaviour, so one check answers for both; splitting the badge would print the same result twice.
The check requires ه (U+0647) and deliberately does not require ھ (U+06BE). Both are in use for the /h/ sound. Demanding ھ would fail a large number of otherwise excellent Kurdish fonts, and Badini usage commonly writes ه.
So a verified Kurdish badge is not a promise about ھ. If you write with that character, type it into the tester on the font page and look at it before you commit. This is a limit we chose, and we would rather print it than let you find it in a headline.
The other five, and what is still yours to check
Kurmanji, Arabic, Persian, Turkish and English are checked with shaperglot, which returns a score out of 100, and the level is the band that score falls in: verified at 80 or above, partial at 40 or above, none below. Verified there means the font scores as fit for everyday use — not that nothing is outstanding; a font can sit at 80 and still have fixes shaperglot would like to see. Partial in those rows often means characters are simply missing, and the font page lists which ones. Kurdish is the exception: it runs against our own profile and carries no score at all — the same three levels, decided by the explicit checks above rather than by a number.
Kurmanji is written in Latin script, but not the Latin script English needs. On top of shaperglot's score it carries one rule of ours: if either Ş or ş (U+015E, U+015F) is absent from the character map, that row can never read verified — we cap it at partial and list whichever one is missing, whatever the score says. So a font carrying only Latin-1 will never be verified for Kurmanji, which is why an English badge tells you nothing about it.
Badges cover the mechanics and stop there. They say nothing about whether a face suits your text, whether it holds up at the size you will actually set, or whether the family has the weights your design leans on. The licence is a separate status, and it has four cases rather than two: fonts under an open licence; fonts we host with the author's written permission on file; fonts we list but do not host, which is either a font whose author lets us show it and sends you to them for the file, or a font you have to buy, where the button sends you to where you buy it; and fonts we host on staff authority with no licence evidence at all, which we label licence unverified on every surface, make no licence claim about, and leave to you to clear before you use them. Where the licence is a standard one, the authority is its canonical text, linked from the font's own page — read it there. Some fonts we host on written permission have no public licence text at all; for those, the permission grid on the page is what states your rights. A download may also contain a copy of that licence, but only if the original archive shipped one, and a copy is not the agreement; the ABOUT.txt inside is always present, and repeats the copyright and licence line from the font's own metadata where the font records them. So use the tester with your own words, read the licence on the font page, then decide.