Brute Force Testing

ebensorkin's picture

Inspired by Breim's Number test ( see below )

010203040506070809000
111213141516171819101
212223242526272829202
313233343536373839303
414243444546474849404
515253545556575859505
616263646566676869606
717273747576777879707
818283848586878889808
919293949596979899909

I thought - Hey, what if I did that for letters? No doubt this is silly in comparison to using common kerning pairs informed by language frequency data. But I found it useful while working on my monospace. And it let's you look for a specific pair quite quickly, as well as letting problems 'announce themselves' to a certain extent. In any event if you find it useful - great! If you care to comment or suggest how to extend the idea for puctuation for instance, that would be interesting. I may make one for diacritics later if folk are keen. And as always if this is stupid feel free to explain why.

aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxyazaaa
babbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxybzbbb
cacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxyczccc
dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxydzddd
eaebecedeeefegeheiejekelemeneoepeqereseteuevewexyezeee
fafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxyfzfff
gagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxygzggg
hahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxyhzhhh
iaibicidieifigihiiijikiliminioipiqirisitiuiviwixyiziii
jajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxyjzjjj
kakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxykzkkk
lalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxylzlll
mambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxymzmmm
nanbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxynznnn
oaobocodoeofogohoiojokolomonooopoqorosotouovowoxyozooo
papbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxypzppp
qaqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxyqzqqq
rarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxyrzrrr
sasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxyszsss
tatbtctdtetftgthtitjtktltmtntotptqtrtstttutvtwtxytzttt
uaubucudueufuguhuiujukulumunuoupuqurusutuuuvuwuxyuzuuu
vavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxyvzvvv
wawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwwxywzwww
xaxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxyxzxxx
yaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyzyyy
zazbzczdzezfzgzhzizjzkzlzmznzozpzqzrzsztzuzvzwzxyzzzzz

AaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxyAzAAA
BaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxyBzBBB
CaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxyCzCCC
DaDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxyDzDDD
EaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExyEzEEE
FaFbFcFdFeFfFgFhFiFjFkFlFmFnFoFpFqFrFsFtFuFvFwFxyFzFFF
GaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxyGzGGG
HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxyHzHHH
IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxyIzIII
JaJbJcJdJeJfJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxyJzJJJ
KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxyKzKKK
LaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxyLzLLL
MaMbMcMdMeMfMgMhMiMjMkMlMmMnMoMpMqMrMsMtMuMvMwMxyMzMMM
NaNbNcNdNeNfNgNhNiNjNkNlNmNnNoNpNqNrNsNtNuNvNwNxyNzNNN
OaObOcOdOeOfOgOhOiOjOkOlOmOnOoOpOqOrOsOtOuOvOwOxyOzOOO
PaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxyPzPPP
QaQbQcQdQeQfQgQhQiQjQkQlQmQnQoQpQqQrQsQtQuQvQwQxyQzQQQ
RaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRuRvRwRxyRzRRR
SaSbScSdSeSfSgShSiSjSkSlSmSnSoSpSqSrSsStSuSvSwSxySzSSS
TaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxyTzTTT
UaUbUcUdUeUfUgUhUiUjUkUlUmUnUoUpUqUrUsUtUuUvUwUxyUzUUU
VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxyVzVVV
WaWbWcWdWeWfWgWhWiWjWkWlWmWnWoWpWqWrWsWtWuWvWwWxyWzWWW
XaXbXcXdXeXfXgXhXiXjXkXlXmXnXoXpXqXrXsXtXuXvXwXxyXzXXX
YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuYvYwYxyYzYYY
ZaZbZcZdZeZfZgZhZiZjZkZlZmZnZoZpZqZrZsZtZuZvZwZxyZzZZZ

AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXYAZAAA
BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXYBZBBB
CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXYCZCCC
DADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXYDZDDD
EAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXYEZEEE
FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXYFZFFF
GAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXYGZGGG
HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXYHZHHH
IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXYIZIII
JAJBJCJDJEJFJGJHJIJJJKJLJMJNJOJPJQJRJSJTJUJVJWJXYJZJJJ
KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXYKZKKK
LALBLCLDLELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXYLZLLL
MAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMWMXYMZMMM
NANBNCNDNENFNGNHNINJNKNLNMNNNONPNQNRNSNTNUNVNWNXYNZNNN
OAOBOCODOEOFOGOHOIOJOKOLOMONOOOPOQOROSOTOUOVOWOXYOZOOO
PAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXYPZPPP
QAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQQQRQSQTQUQVQWQXYQZQQQ
RARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQRRRSRTRURVRWRXYRZRRR
SASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXYSZSSS
TATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTSTTTUTVTWTXYTZTTT
UAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXYUZUUU
VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXYVZVVV
WAWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVWWWXYWZWWW
XAXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVXWXXYXZXXX
YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYZYYY
ZAZBZCZDZEZFZGZHZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZYZZZZ

.00's picture

Eben,

This sort of thing has been in use in our studio for at least 15 years. I know URW used this as well as ITC (where I first encountered it.)
The one thing you should change is your Initial Cap to lowercase set. Add a second lowercase letter to the string. Kerning a Pa is useless unless it is followed by another letter (Pal, or Pau for instance). There can be no incorrect spacing between two letters, it is only when you add the third letter that the spacing between the first two can be evaluated.

As for punctuation:
,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
is as good a place to start as any.

James

William Berkson's picture

Eben, this test is also noted in "Printer's Type in the Twentieth Century," by Richard Southall. He mentions that doing it at small sizes makes mistakes of uneven color pop out to the eye. I find the test very helpful for that reason especially.

dezcom's picture

Gee Eben, I have been doing that sort of thing too--I guess now I know I didn't invent it :-). I always use "nu" before and after all my kerning pair tests for the same reason James mentioned above [as an example: nuvonufonurinutynu...]. To me the "nu" combination gives you a rhythm in the color of the font in question. When you print out the strings, you can either see holes if the kern is too loose or dark spots if it is too tight.
Don't forget your open and close quotes with each glyph as well.

ChrisL
PS: it figures that dogonne James would have been doing this sort of thing for 15 years :-)

blank's picture

Have you seen Leslie Cabarga's kern king? It's a big block of greek that contains every combination of latin letters used in English.

dezcom's picture

Yes JPad, I started with Kernking a couple of years ago but wanted more so I made my own. Mine uses the CE characters as well and has more text surounding the kern pairs to see how they fit in context.
It really wasn't that hard to make. I first set up an alphabet seperated by commas. I then copied the set and did various permutations of search-and-replace with the commas untill I had everything I wanted. My first experience for the concept wa from my caligraphy teacher in 1962 (Arnold Bank). He had us write "necklaces" useing the n and then the o to intersperse betweeneach letter of the alphabet. This was for training in spacing as well as writing the forms. I just carried on the concept many years later when I started designing type. I see that I am far from alone in such usage :-)

ChrisL

Sebastian Nagel's picture

I'm just programming a small PHP-Script, where you can enter the characters you want for lowercase, uppercase, smallcaps and figures, as well as "in between strings", so you don't have to do this with manual work or search and replace. They are combined against each other, with the in-betweens giving the spacing/kerning-context.

So you can enter "a,b,c,d,..." + in-between "minimum", and get:
minimumaaminimumabminimumacminimumadminimumae...

It will be ready for tomorrow or the day after, and it's not very sophisticated, but you can use it and configure it the way you want (which is specially useful for the smallcaps, as you may want to import the generated strings to fontlab, fitting your names for the SCs there).

dezcom's picture

Far out Sebastien, sounds great!

ChrisL

ebensorkin's picture

Sebastian, that sounds great! Will it work in FL 4.6 & 5 or Just 5? ( I have only got 4.6 for now alas!)

BTW, I have been adding to the file using Chris, & James' comments as a guide ( and a tiny bit of common sense ) along the way.

Would you guys crit the next edition? I was planning on offering it to be worked over & modified at will like open source code is.

Today I figured out how to make the file Unicode to access more glyphs. But I think I could benefit from feedback & you all's superior insight before I try to expand much further. Especially since this thing seems to be growing in scope at an almost exponential rate - even if it isn't really.

ebensorkin's picture

Have you guys seen this It's the whole of unicode printed with aperson to scale. I don't know what point size was used.

http://ian-albert.com/misc/bigimages/unichart/unichart-printed.jpg

dezcom's picture

I can't get your link to load Eben.

ChrisL

ebensorkin's picture

Sorry, that doesn't usually happen when you have loaded a page

here is where it's from

http://ian-albert.com/misc/unichart.php

It's a page that let's you see how enormous the whole unicode is. Needless to say it's like 90% chinese or something similar. Latin looks like 2% or somethging even with all our new CE glyphs & so on. I was busy looking for a text file with which to save time in constructing the next version of the file when I ran into this.

Sebastian Nagel's picture

Eben: it would be a PHP-script, running on a (my) webserver, and giving you a generated textfile in your browser window. You can copy it where ever you want afterwards. Most of the time you want to copy it to fontlabs metrics window I guess, or to indesign, to get a print from it.

At the moment I'm thinking about a problem with smallcaps:
In HTML, special characters need to be adressed with a number. For example, Hebrew letter Qof would be &# 1511; (without the space in between).
But there are no HTML-entities for characters placed in the PUA, so I can not display them in the browser (or does anyone here know how I can access PUA characters or in general unicode values with HTML textencoding? That would be great for a preview in-browser.)

For using with Fontlab, this is no problem: You would want them named in a FL-compatible way anyway (like "/A.sc,/B.sc,/C.sc, ...") and past this to fontlab.

But if you want to get this to Indesign, you have a problem, because Indesign of course does not interpret "/A.sc" as "show the small caps A".
Anyway: If your font is as far as you already have opentype scripting for small caps implemented, you can just get the "aa" or "Aa"-combinations, take them to indesign and active small caps or all small caps, and you get what you want.

dezcom's picture

The FontLab preview or Metrics window is most useful to me. I can always apply the smcp feature in InD to lowercase if I need it.

The PUA is always difficult in InD because you have to use the glyph pallette. Onece you change fonts, anything selected from the glyph palette will change unless the 2 fonts glyphs are all named and ordered exactly the same.

ChrisL

Sebastian Nagel's picture

So here is a first quick&dirty-version of it:
http://www.gestaltungssache.at/buchstaben.php

It takes the different strings entered, and intersects them, combining each with each. I only implented the comibinations that might be useful for type testing (AA, Aa, aa, A/A.sc, /A.sc/A.sc and figures).
You can change the strings to alter the defaults.

To get an optical reference, you can enter "fills" in between, as Chris does with his "nu".

You can also define a Font for display in browser, but this won't be too useful i guess, as browsers don't kern. But theoretically, you could enter your fontname in the field (be sure it is installed and to get the spelling exactly).

You can see the source code here if you want to know what it does exactly, or if you want to chase for bugs.
http://www.gestaltungssache.at/buchstaben.txt

Try it, tell me if it's useful or what could be improved, added, left out, ... Are the default strings okay, or did I miss something basic?
Is the output format okay?

Sebastian

ebensorkin's picture

Extended brute force test as of: Jan 30,2007 (Version 2)

by Eben Sorkin

Comments: There are many inconsistancies to fix here.

For instance, not all lines have the german doubles or 'eszet'. The thorn and
diacritics are not sufficiently present. AE, ae, OE, oe, fi, fl, ij, and slash o are
likewise not fully integrated yet. In some cases I thought of two ways of making the
'same' comparison but using different structures.

BTW: Is there a case where a letter comes after an ordinal? What about a number?

Briem's Numbers

010203040506070809000
111213141516171819101
212223242526272829202
313233343536373839303
414243444546474849404
515253545556575859505
616263646566676869606
717273747576777879707
818283848586878889808
919293949596979899909

My construction

123456789012345678
234567890123456789
345678901234567890
456789012345678901
567890123456789012
678901234567890123
789012345678901234
890123456789012345
901234567890123456
012345678901234567

From Gerrit Noordzij's 'Letter Letter' example 1 ( extended - his example went to 7 deep)

1 2 3 4 5 6 7 8 9 0 1
2 3 4 5 6 7 8 9 0 1 2
3 4 5 6 7 8 9 0 1 2 3
4 5 6 7 8 9 0 1 2 3 4
5 6 7 8 9 0 1 2 3 4 5
6 7 8 9 0 1 2 3 4 5 6
7 8 9 0 1 2 3 4 5 6 7
8 9 0 1 2 3 4 5 6 7 8
9 0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 0

From Gerrit Noordzij's 'Letter Letter' example 2

123456789012345678
901234567890123456
789012345678901234
567890123456789012
345678901234567890
123456789012345678

Possible replacement/alternative model for the one used from 'Lower case, Basic Latin' onwards.

,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
,A,Æ,B,C,D,E,F,G,H,I,IJ,J,K,L,M,N,O,Œ,Ø,P,Q,R,S,T,U,V,W,X,Y,Z,
,1,2,3,4,5,6,7,8,9,0,
,À,Á,Â,Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ñ,Ð,Ò,Ó,Ô,Õ,Ö,Ø,Ù,Ú,Û,Ü,Ý,
,à,á,â,ã,ä,å,æ,ç,è,é,ê,ë,ì,í,î,ï,ð,ñ,ò,ó,ô,õ,ö,ø,ù,ú,û,ü,ý,þ,ÿ,
,Ā,ā,Ă,ă,Ą,ą,Ć,ć,Ĉ,ĉ,Ċ,ċ,Č,č,Ď,ď,Đ,đ,Ē,ē,Ĕ,ĕ,Ė,ė,Ę,ę,Ě,ě,ff,fi,fl,Ĝ,ĝ,Ğ,
,ğ,Ġ,ġ,Ģ,ģ,Ĥ,Ħ,ħ,Ĩ,ĩ,Ī,ī,Ĭ,ĭ,Į,į,İ,ı,IJ,ij,Ĵ,ĵ,Ķ,ķ,ĸ,Ĺ,ĺ,
,Ļ,ļ,Ľ,ľ,Ŀ,ŀ,Ł,ł,Ń,ń,Ņ,ņ,Ň,ň,ʼn,Ŋ,ŋ,Ō,ō,Ŏ,ŏ,Ő,ő,Œ,œ,Ŕ,ŕ,Ŗ,ŗ,Ř,ř,Ś,ś,Ŝ,ŝ,Ş,ş,Š,š,ß,
,Ţ,ţ,Ť,ť,Ŧ,ŧ,Ũ,ũ,Ū,ū,Ŭŭ,Ů,ů,Ű,ű,Ų,ų,Ŵ,ŵ,Ŷ,ŷ,Ÿ,Ź,ź,Ż,ż,Ž,ž,ſ,ƀ,Ð,ð,Þ,þ,
,$,€,£,¢,¤,#,@,%,§,ƒ,¶,•,ª,º,∞,&,*,
,«,»,‹,›,(,),[,],{,},\,|./,~,:,;,,,.,!,¡,?,¿,,,',",‘,“,”,’,
-,—,_,+,–,÷,×,=,≠,≈,±,¦,†,‡,™,°,¼,½,¾,

A More Rational Bracket model (incomplete)

(a)(æ)(b)(c)(ç)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(œ)(ø)(p)(q)(r)(s)(ß)(t)(u)(v)(w)(x)(y)(z)
[a][æ][b][c][ç][d][e][f][g][h][i][j][k][l][m][n][o][œ][ø][p][q][r][s][ß][t][u][v][w][x][y][z]
{a}{æ}{b}{c}{ç}{d}{e}{f}{g}{h}{i}{j}{k}{l}{m}{n}{o}{œ}{ø}{p}{q}{r}{s}{ß}{t}{u}{v}{w}{x}{y}{z}

(A)(Æ)(B)(C)(Ç)(D)(E)(F)(G)(H)(I)(J)(K)(L)(M)(N)(O)(Œ)(Ø)(P)(Q)(R)(S)(T)(U)(V)(W)(X)(Y)(Z)
[A][Æ][B][C][Ç][D][E][F][G][H][I][J][K][L][M][N][O][Œ][Ø][P][Q][R][S][T][U][V][W][X][Y][Z]
{A}{Æ}{B}{C}{Ç}{D}{E}{F}{G}{H}{I}{J}{K}{L}{M}{N}{O}{Œ}{Ø}{P}{Q}{R}{S}{T}{U}{V}{W}{X}{Y}{Z}

(1)(2)(3)(4)(5)(6)(7)(8)(9)(0) [1][2][3][4][5][6][7][8][9][0] {1}{2}{3}{4}{5}{6}{7}{8}{9}{0}

Lower case, Basic Latin

aaababcacdadeaefafgaghahiaijajkaklalmamnanoaopapqaqarsastatuauvavwawxaxyayzaz
ababbbcbcdbdebefbfgbghbhibijbjkbklblmbmnbnobopbpqbqbrsbstbtubuvbvwbwxbxybyzbz
acabcbcccdcdecefcfgcghchicijcjkcklclmcmncnocopcpqcqcrscstctucuvcvwcwxcxycyzcz
açabçbcçcdçdeçefçfgçghçhiçijçjkçklçlmçmnçnoçopçpqçqçrsçstçtuçuvçvwçwxçxyçyzçz
adabdbcdcdddedefdfgdghdhidijdjkdkldlmdmndnodopdpqdqdrsdstdtuduvdvwdwxdxydyzdz
aeabebcecdedeeefefgeghehieijejkeklelmemnenoeopepqeqersestetueuvevwewxexyeyzez
afabfbcfcdfdefefffgfghfhifijfjkfklflmfmnfnofopfpqfqfrsfstftufuvfvwfwxfxyfyzfz
agabgbcgcdgdegefgfggghghigijgjkgklglmgmngnogopgpqgqgrsgstgtuguvgvwgwxgxygyzgz
ahabhbchcdhdehefhfghghhhihijhjkhklhlmhmnhnohophpqhqhrshsthtuhuvhvwhwxhxyhyzhz
aiabibcicdideiefifgighihiiijijkiklilmimninoiopipqiqirsistituiuvivwiwxixyiyziz
ajabjbcjcdjdejefjfgjghjhijijjjkjkljlmjmnjnojopjpqjqjrsjstjtujuvjvwjwxjxyjyzjz
akabkbckcdkdekefkfgkghkhikijkjkkklklmkmnknokopkpqkqkrskstktukuvkvwkwxkxykyzkz
alablbclcdldeleflfglghlhilijljklklllmlmnlnoloplpqlqlrslstltuluvlvwlwxlxylyzlz
amabmbcmcdmdemefmfgmghmhimijmjkmklmlmmmnmnomopmpqmqmrsmstmtumuvmvwmwxmxymyzmz
anabnbcncdndenefnfgnghnhinijnjknklnlmnmnnnonopnpqnqnrsnstntunuvnvwnwxnxynyznz
aoabobcocdodeoefofgoghohioijojkoklolmomnonooopopqoqorsostotuouvovwowxoxyoyzoz
apabpbcpcdpdepefpfgpghphipijpjkpklplmpmnpnopopppqpqprspstptupuvpvwpwxpxypyzpz
aqabqbcqcdqdeqefqfgqghqhiqijqjkqklqlmqmnqnoqopqpqqqqrsqstqtuquvqvwqwxqxyqyzqz
arabrbcrcdrderefrfgrghrhirijrjkrklrlmrmnrnoroprpqrqrrsrstrturuvrvwrwxrxyryzrz
asabsbcscdsdesefsfgsghshisijsjksklslmsmnsnosopspqsqsrssststusuvsvwswxsxysyzsz
atabtbctcdtdeteftfgtghthitijtjktkltlmtmntnotoptpqtqtrststttutuvtvwtwxtxytyztz
auabubcucdudeuefufgughuhiuijujkuklulmumnunouopupquqursustutuuuvuvwuwxuxyuyzuz
avabvbcvcdvdevefvfgvghvhivijvjkvklvlmvmnvnovopvpqvqvrsvstvtuvuvvvwvwxvxyvyzvz
awabwbcwcdwdewefwfgwghwhiwijwjkwklwlmwmnwnowopwpqwqwrswstwtuwuvwvwwwxwxywyzwz
axabxbcxcdxdexefxfgxghxhixijxjkxklxlmxmnxnoxopxpqxqxrsxstxtuxuvxvwxwxxxyxyzxz
ayabybcycdydeyefyfgyghyhiyijyjkyklylmymnynoyopypqyqyrsystytuyuvyvwywxyxyyyzyz
azabzbczcdzdezefzfgzghzhizijzjkzklzlmzmnznozopzpqzqzrszstztuzuvzvwzwxzxyzyzzz

Lower case, Extended Lowercase + Diacritics and digraphs

aæabæbcæcdædeæefæfgæghæhiæijæjkæklælmæmnænoæopæpqæqærsæstætuæuvævwæwxæxyæyzæz
aøabøbcøcdødeøeføfgøghøhiøijøjkøklølmømnønoøopøpqøqørsøstøtuøuvøvwøwxøxyøyzøz
aœabœbcœcdœdeœefœfgœghœhiœijœjkœklœlmœmnœnoœopœpqœqœrsœstœtuœuvœvwœwxœxyœyzœz
aßabßbcßcdßdeßefßfgßghßhißijßjkßklßlmßmnßnoßopßpqßqßrsßstßtußuvßvwßwxßxyßyzßz
aðabðbcðcdðdeðefðfgðghðhiðijðjkðklðlmðmnðnoðopðpqðqðrsðstðtuðuvðvwðwxðxyðyzðz
aþabþbcþcdþdeþefþfgþghþhiþijþjkþklþlmþmnþnoþopþpqþqþrsþstþtuþuvþvwþwxþxyþyzþz

Basic latin UPPER & lc

aAabAbcAcdAdeAefAfgAghAhiAijAjkAklAlmAmnAnoAopApqAqArsAstAtuAuvAvwAwxAxyAyzAz
aÆabÆbcÆcdÆdeÆefÆfgÆghÆhiÆijÆjkÆklÆlmÆmnÆnoÆopÆpqÆqÆrsÆstÆtuÆuvÆvwÆwxÆxyÆyzÆz
aBabBbcBcdBdeBefBfgBghBhiBijBjkBklBlmBmnBnoBopBpqBqBrsBstBtuBuvBvwBwxBxyByzBz
aCabCbcCcdCdeCefCfgCghChiCijCjkCklClmCmnCnoCopCpqCqCrsCstCtuCuvCvwCwxCxyCyzCz
aÇabÇbcÇcdÇdeÇefÇfgÇghÇhiÇijÇjkÇklÇlmÇmnÇnoÇopÇpqÇqÇrsÇstÇtuÇuvÇvwÇwxÇxyÇyzÇz
aDabDbcDcdDdeDefDfgDghDhiDijDjkDklDlmDmnDnoDopDpqDqDrsDstDtuDuvDvwDwxDxyDyzDz
aEabEbcEcdEdeEefEfgEghEhiEijEjkEklElmEmnEnoEopEpqEqErsEstEtuEuvEvwEwxExyEyzEz
aFabFbcFcdFdeFefFfgFghFhiFijFjkFklFlmFmnFnoFopFpqFqFrsFstFtuFuvFvwFwxFxyFyzFz
aGabGbcGcdGdeGefGfgGghGhiGijGjkGklGlmGmnGnoGopGpqGqGrsGstGtuGuvGvwGwxGxyGyzGz
aHabHbcHcdHdeHefHfgHghHhiHijHjkHklHlmHmnHnoHopHpqHqHrsHstHtuHuvHvwHwxHxyHyzHz
aIabIbcIcdIdeIefIfgIghIhiIijIjkIklIlmImnInoIopIpqIqIrsIstItuIuvIvwIwxIxyIyzIz
aJabJbcJcdJdeJefJfgJghJhiJijJjkJklJlmJmnJnoJopJpqJqJrsJstJtuJuvJvwJwxJxyJyzJz
aKabKbcKcdKdeKefKfgKghKhiKijKjkKklKlmKmnKnoKopKpqKqKrsKstKtuKuvKvwKwxKxyKyzKz
aLabLbcLcdLdeLefLfgLghLhiLijLjkLklLlmLmnLnoLopLpqLqLrsLstLtuLuvLvwLwxLxyLyzLz
aMabMbcMcdMdeMefMfgMghMhiMijMjkMklMlmMmnMnoMopMpqMqMrsMstMtuMuvMvwMwxMxyMyzMz
aNabNbcNcdNdeNefNfgNghNhiNijNjkNklNlmNmnNnoNopNpqNqNrsNstNtuNuvNvwNwxNxyNyzNz
aOabObcOcdOdeOefOfgOghOhiOijOjkOklOlmOmnOnoOopOpqOqOrsOstOtuOuvOvwOwxOxyOyzOz
aŒabŒbcŒcdŒdeŒefŒfgŒghŒhiŒijŒjkŒklŒlmŒmnŒnoŒopŒpqŒqŒrsŒstŒtuŒuvŒvwŒwxŒxyŒyzŒz
aØabØbcØcdØdeØefØfgØghØhiØijØjkØklØlmØmnØnoØopØpqØqØrsØstØtuØuvØvwØwxØxyØyzØz
aPabPbcPcdPdePefPfgPghPhiPijPjkPklPlmPmnPnoPopPpqPqPrsPstPtuPuvPvwPwxPxyPyzPz
aQabQbcQcdQdeQefQfgQghQhiQijQjkQklQlmQmnQnoQopQpqQqQrsQstQtuQuvQvwQwxQxyQyzQz
aRabRbcRcdRdeRefRfgRghRhiRijRjkRklRlmRmnRnoRopRpqRqRrsRstRtuRuvRvwRwxRxyRyzRz
aSabSbcScdSdeSefSfgSghShiSijSjkSklSlmSmnSnoSopSpqSqSrsSstStuSuvSvwSwxSxySyzSz
aTabTbcTcdTdeTefTfgTghThiTijTjkTklTlmTmnTnoTopTpqTqTrsTstTtuTuvTvwTwxTxyTyzTz
aUabUbcUcdUdeUefUfgUghUhiUijUjkUklUlmUmnUnoUopUpqUqUrsUstUtuUuvUvwUwxUxyUyzUz
aVabVbcVcdVdeVefVfgVghVhiVijVjkVklVlmVmnVnoVopVpqVqVrsVstVtuVuvVvwVwxVxyVyzVz
aWabWbcWcdWdeWefWfgWghWhiWijWjkWklWlmWmnWnoWopWpqWqWrsWstWtuWuvWvwWwxWxyWyzWz
aXabXbcXcdXdeXefXfgXghXhiXijXjkXklXlmXmnXnoXopXpqXqXrsXstXtuXuvXvwXwxXxyXyzXz
aYabYbcYcdYdeYefYfgYghYhiYijYjkYklYlmYmnYnoYopYpqYqYrsYstYtuYuvYvwYwxYxyYyzYz
aZabZbcZcdZdeZefZfgZghZhiZijZjkZklZlmZmnZnoZopZpqZqZrsZstZtuZuvZvwZwxZxyZyzZz

AAABABCACDADEAEFAFGAGHAHIAIJAJKAKLALMAMNANOAOPAPQAQARSASTATUAUVAVWAWXAXYAYZAZ
AÆABÆBCÆCDÆDEÆEFÆFGÆGHÆHIÆIJÆJKÆKLÆLMÆMNÆNOÆOPÆPQÆQÆRSÆSTÆTUÆUVÆVWÆWXÆXYÆYZÆZ
ABABBBCBCDBDEBEFBFGBGHBHIBIJBJKBKLBLMBMNBNOBOPBPQBQBRSBSTBTUBUVBVWBWXBXYBYZBZ
ACABCBCCCDCDECEFCFGCGHCHICIJCJKCKLCLMCMNCNOCOPCPQCQCRSCSTCTUCUVCVWCWXCXYCYZCZ
AÇABÇBCÇCDÇDEÇEFÇFGÇGHÇHIÇIJÇJKÇKLÇLMÇMNÇNOÇOPÇPQÇQÇRSÇSTÇTUÇUVÇVWÇWXÇXYÇYZÇZ
ADABDBCDCDDDEDEFDFGDGHDHIDIJDJKDKLDLMDMNDNODOPDPQDQDRSDSTDTUDUVDVWDWXDXYDYZDZ
AEABEBCECDEDEEEFEFGEGHEHIEIJEJKEKLELMEMNENOEOPEPQEQERSESTETUEUVEVWEWXEXYEYZEZ
AFABFBCFCDFDEFEFFFGFGHFHIFIJFJKFKLFLMFMNFNOFOPFPQFQFRSFSTFTUFUVFVWFWXFXYFYZFZ
AGABGBCGCDGDEGEFGFGGGHGHIGIJGJKGKLGLMGMNGNOGOPGPQGQGRSGSTGTUGUVGVWGWXGXYGYZGZ
AHABHBCHCDHDEHEFHFGHGHHHIHIJHJKHKLHLMHMNHNOHOPHPQHQHRSHSTHTUHUVHVWHWXHXYHYZHZ
AIABIBCICDIDEIEFIFGIGHIHIIIJIJKIKLILMIMNINOIOPIPQIQIRSISTITUIUVIVWIWXIXYIYZIZ
AJABJBCJCDJDEJEFJFGJGHJHIJIJJJKJKLJLMJMNJNOJOPJPQJQJRSJSTJTUJUVJVWJWXJXYJYZJZ
AKABKBCKCDKDEKEFKFGKGHKHIKIJKJKKKLKLMKMNKNOKOPKPQKQKRSKSTKTUKUVKVWKWXKXYKYZKZ
ALABLBCLCDLDELEFLFGLGHLHILIJLJKLKLLLMLMNLNOLOPLPQLQLRSLSTLTULUVLVWLWXLXYLYZLZ
AMABMBCMCDMDEMEFMFGMGHMHIMIJMJKMKLMLMMMNMNOMOPMPQMQMRSMSTMTUMUVMVWMWXMXYMYZMZ
ANABNBCNCDNDENEFNFGNGHNHINIJNJKNKLNLMNMNNNONOPNPQNQNRSNSTNTUNUVNVWNWXNXYNYZNZ
AOABOBCOCDODEOEFOFGOGHOHIOIJOJKOKLOLMOMNONOOOPOPQOQORSOSTOTUOUVOVWOWXOXYOYZOZ
AŒABŒBCŒCDŒDEŒEFŒFGŒGHŒHIŒIJŒJKŒKLŒLMŒMNŒNOŒOPŒPQŒQŒRSŒSTŒTUŒUVŒVWŒWXŒXYŒYZŒZ
AØABØBCØCDØDEØEFØFGØGHØHIØIJØJKØKLØLMØMNØNOØOPØPQØQØRSØSTØTUØUVØVWØWXØXYØYZØZ
APABPBCPCDPDEPEFPFGPGHPHIPIJPJKPKLPLMPMNPNOPOPPPQPQPRSPSTPTUPUVPVWPWXPXYPYZPZ
AQABQBCQCDQDEQEFQFGQGHQHIQIJQJKQKLQLMQMNQNOQOPQPQQQQRSQSTQTUQUVQVWQWXQXYQYZQZ
ARABRBCRCDRDEREFRFGRGHRHIRIJRJKRKLRLMRMNRNOROPRPQRQRRSRSTRTURUVRVWRWXRXYRYZRZ
ASABSBCSCDSDESEFSFGSGHSHISIJSJKSKLSLMSMNSNOSOPSPQSQSRSSSTSTUSUVSVWSWXSXYSYZSZ
ATABTBCTCDTDETEFTFGTGHTHITIJTJKTKLTLMTMNTNOTOPTPQTQTRSTSTTTUTUVTVWTWXTXYTYZTZ
AUABUBCUCDUDEUEFUFGUGHUHIUIJUJKUKLULMUMNUNOUOPUPQUQURSUSTUTUUUVUVWUWXUXYUYZUZ
AVABVBCVCDVDEVEFVFGVGHVHIVIJVJKVKLVLMVMNVNOVOPVPQVQVRSVSTVTUVUVVVWVWXVXYVYZVZ
AWABWBCWCDWDEWEFWFGWGHWHIWIJWJKWKLWLMWMNWNOWOPWPQWQWRSWSTWTUWUVWVWWWXWXYWYZWZ
AXABXBCXCDXDEXEFXFGXGHXHIXIJXJKXKLXLMXMNXNOXOPXPQXQXRSXSTXTUXUVXVWXWXXXYXYZXZ
AYABYBCYCDYDEYEFYFGYGHYHIYIJYJKYKLYLMYMNYNOYOPYPQYQYRSYSTYTUYUVYVWYWXYXYYYZYZ
AZABZBCZCDZDEZEFZFGZGHZHIZIJZJKZKLZLMZMNZNOZOPZPQZQZRSZSTZTUZUVZVWZWXZXYZYZZZ

a1ab1bc1cd1de1ef1fg1gh1hi1ij1jk1kl1lm1mn1no1op1pq1q1rs1st1tu1uv1vw1wx1xy1yz1z
a2ab2bc2cd2de2ef2fg2gh2hi2ij2jk2kl2lm2mn2no2op2pq2q2rs2st2tu2uv2vw2wx2xy2yz2z
a3ab3bc3cd3de3ef3fg3gh3hi3ij3jk3kl3lm3mn3no3op3pq3q3rs3st3tu3uv3vw3wx3xy3yz3z
a4ab4bc4cd4de4ef4fg4gh4hi4ij4jk4kl4lm4mn4no4op4pq4q4rs4st4tu4uv4vw4wx4xy4yz4z
a5ab5bc5cd5de5ef5fg5gh5hi5ij5jk5kl5lm5mn5no5op5pq5q5rs5st5tu5uv5vw5wx5xy5yz5z
a6ab6bc6cd6de6ef6fg6gh6hi6ij6jk6kl6lm6mn6no6op6pq6q6rs6st6tu6uv6vw6wx6xy6yz6z
a7ab7bc7cd7de7ef7fg7gh7hi7ij7jk7kl7lm7mn7no7op7pq7q7rs7st7tu7uv7vw7wx7xy7yz7z
a8ab8bc8cd8de8ef8fg8gh8hi8ij8jk8kl8lm8mn8no8op8pq8q8rs8st8tu8uv8vw8wx8xy8yz8z
a9ab9bc9cd9de9ef9fg9gh9hi9ij9jk9kl9lm9mn9no9op9pq9q9rs9st9tu9uv9vw9wx9xy9yz9z
a0ab0bc0cd0de0ef0fg0gh0hi0ij0jk0kl0lm0mn0no0op0pq0q0rs0st0tu0uv0vw0wx0xy0yz0z

A1AB1BC1CD1DE1EF1FG1GH1HI1IJ1JK1KL1LM1MN1NO1OP1PQ1Q1RS1ST1TU1UV1VW1WX1XY1YZ1Z
A2AB2BC2CD2DE2EF2FG2GH2HI2IJ2JK2KL2LM2MN2NO2OP2PQ2Q2RS2ST2TU2UV2VW2WX2XY2YZ2Z
A3AB3BC3CD3DE3EF3FG3GH3HI3IJ3JK3KL3LM3MN3NO3OP3PQ3Q3RS3ST3TU3UV3VW3WX3XY3YZ3Z
A4AB4BC4CD4DE4EF4FG4GH4HI4IJ4JK4KL4LM4MN4NO4OP4PQ4Q4RS4ST4TU4UV4VW4WX4XY4YZ4Z
A5AB5BC5CD5DE5EF5FG5GH5HI5IJ5JK5KL5LM5MN5NO5OP5PQ5Q5RS5ST5TU5UV5VW5WX5XY5YZ5Z
A6AB6BC6CD6DE6EF6FG6GH6HI6IJ6JK6KL6LM6MN6NO6OP6PQ6Q6RS6ST6TU6UV6VW6WX6XY6YZ6Z
A7AB7BC7CD7DE7EF7FG7GH7HI7IJ7JK7KL7LM7MN7NO7OP7PQ7Q7RS7ST7TU7UV7VW7WX7XY7YZ7Z
A8AB8BC8CD8DE8EF8FG8GH8HI8IJ8JK8KL8LM8MN8NO8OP8PQ8Q8RS8ST8TU8UV8VW8WX8XY8YZ8Z
A9AB9BC9CD9DE9EF9FG9GH9HI9IJ9JK9KL9LM9MN9NO9OP9PQ9Q9RS9ST9TU9UV9VW9WX9XY9YZ9Z
A0AB0BC0CD0DE0EF0FG0GH0HI0IJ0JK0KL0LM0MN0NO0OP0PQ0Q0RS0ST0TU0UV0VW0WX0XY0YZ0Z

a.ab.bc.cd.de.ef.fg.gh.hi.ij.jk.kl.lm.mn.no.op.pq.q.rs.st.tu.uv.vw.wx.xy.yz.z

a,ab,bc,cd,de,ef,fg,gh,hi,ij,jk,kl,lm,mn,no,op,pq,q,rs,st,tu,uv,vw,wx,xy,yz,z

a;ab;bc;cd;de;ef;fg;gh;hi;ij;jk;kl;lm;mn;no;op;pq;q;rs;st;tu;uv;vw;wx;xy;yz;z

a:ab:bc:cd:de:ef:fg:gh:hi:ij:jk:kl:lm:mn:no:op:pq:q:rs:st:tu:uv:vw:wx:xy:yz:z

a…ab…bc…cd…de…ef…fg…gh…hi…ij…jk…kl…lm…mn…no…op…pq…q…rs…st…tu…uv…vw…wx…xy…yz…z

a?ab?bc?cd?de?ef?fg?gh?hi?ij?jk?kl?lm?mn?no?op?pq?q?rs?st?tu?uv?vw?wx?xy?yz?z

a¿ab¿bc¿cd¿de¿ef¿fg¿gh¿hi¿ij¿jk¿kl¿lm¿mn¿no¿op¿pq¿q¿rs¿st¿tu¿uv¿vw¿wx¿xy¿yz¿z

a!ab!bc!cd!de!ef!fg!gh!hi!ij!jk!kl!lm!mn!no!op!pq!q!rs!st!tu!uv!vw!wx!xy!yz!z

a¡ab¡bc¡cd¡de¡ef¡fg¡gh¡hi¡ij¡jk¡kl¡lm¡mn¡no¡op¡pq¡q¡rs¡st¡tu¡uv¡vw¡wx¡xy¡yz¡z

a-ab-bc-cd-de-ef-fg-gh-hi-ij-jk-kl-lm-mn-no-op-pq-q-rs-st-tu-uv-vw-wx-xy-yz-z

a—ab—bc—cd—de—ef—fg—gh—hi—ij—jk—kl—lm—mn—no—op—pq—q—rs—st—tu—uv—vw—wx—xy—yz—z

A.AB.BC.CD.DE.EF.FG.GH.HI.IJ.JK.KL.LM.MN.NO.OP.PQ.Q.RS.ST.TU.UV.VW.WX.XY.YZ.Z

A,AB,BC,CD,DE,EF,FG,GH,HI,IJ,JK,KL,LM,MN,NO,OP,PQ,Q,RS,ST,TU,UV,VW,WX,XY,YZ,Z

A;AB;BC;CD;DE;EF;FG;GH;HI;IJ;JK;KL;LM;MN;NO;OP;PQ;Q;RS;ST;TU;UV;VW;WX;XY;YZ;Z

A:AB:BC:CD:DE:EF:FG:GH:HI:IJ:JK:KL:LM:MN:NO:OP:PQ:Q:RS:ST:TU:UV:VW:WX:XY:YZ:Z

A…AB…BC…CD…DE…EF…FG…GH…HI…IJ…JK…KL…LM…MN…NO…OP…PQ…Q…RS…ST…TU…UV…VW…WX…XY…YZ…Z

A?AB?BC?CD?DE?EF?FG?GH?HI?IJ?JK?KL?LM?MN?NO?OP?PQ?Q?RS?ST?TU?UV?VW?WX?XY?YZ?Z

A¿AB¿BC¿CD¿DE¿EF¿FG¿GH¿HI¿IJ¿JK¿KL¿LM¿MN¿NO¿OP¿PQ¿Q¿RS¿ST¿TU¿UV¿VW¿WX¿XY¿YZ¿Z

A!AB!BC!CD!DE!EF!FG!GH!HI!IJ!JK!KL!LM!MN!NO!OP!PQ!Q!RS!ST!TU!UV!VW!WX!XY!YZ!Z

A¡AB¡BC¡CD¡DE¡EF¡FG¡GH¡HI¡IJ¡JK¡KL¡LM¡MN¡NO¡OP¡PQ¡Q¡RS¡ST¡TU¡UV¡VW¡WX¡XY¡YZ¡Z

A-AB-BC-CD-DE-EF-FG-GH-HI-IJ-JK-KL-LM-MN-NO-OP-PQ-Q-RS-ST-TU-UV-VW-WX-XY-YZ-Z

A—AB—BC—CD—DE—EF—FG—GH—HI—IJ—JK—KL—LM—MN—NO—OP—PQ—Q—RS—ST—TU—UV—VW—WX—XY—YZ—Z

a'ab'bc'cd'de'ef'fg'gh'hi'ij'jk'kl'lm'mn'no'op'pq'q'rs'st'tu'uv'vw'wx'xy'yz'z

a"ab"bc"cd"de"ef"fg"gh"hi"ij"jk"kl"lm"mn"no"op"pq"q"rs"st"tu"uv"vw"wx"xy"yz"z

a“ab“bc“cd“de“ef“fg“gh“hi“ij“jk“kl“lm“mn“no“op“pq“q“rs“st“tu“uv“vw“wx“xy“yz“z

a‘ab‘bc‘cd‘de‘ef‘fg‘gh‘hi‘ij‘jk‘kl‘lm‘mn‘no‘op‘pq‘q‘rs‘st‘tu‘uv‘vw‘wx‘xy‘yz‘z

a”ab”bc”cd”de”ef”fg”gh”hi”ij”jk”kl”lm”mn”no”op”pq”q”rs”st”tu”uv”vw”wx”xy”yz”z

a’ab’bc’cd’de’ef’fg’gh’hi’ij’jk’kl’lm’mn’no’op’pq’q’rs’st’tu’uv’vw’wx’xy’yz’z

A'AB'BC'CD'DE'EF'FG'GH'HI'IJ'JK'KL'LM'MN'NO'OP'PQ'Q'RS'ST'TU'UV'VW'WX'XY'YZ'Z

A"AB"BC"CD"DE"EF"FG"GH"HI"IJ"JK"KL"LM"MN"NO"OP"PQ"Q"RS"ST"TU"UV"VW"WX"XY"YZ"Z

A“AB“BC“CD“DE“EF“FG“GH“HI“IJ“JK“KL“LM“MN“NO“OP“PQ“Q“RS“ST“TU“UV“VW“WX“XY“YZ“Z

A‘AB‘BC‘CD‘DE‘EF‘FG‘GH‘HI‘IJ‘JK‘KL‘LM‘MN‘NO‘OP‘PQ‘Q‘RS‘ST‘TU‘UV‘VW‘WX‘XY‘YZ‘Z

A”AB”BC”CD”DE”EF”FG”GH”HI”IJ”JK”KL”LM”MN”NO”OP”PQ”Q”RS”ST”TU”UV”VW”WX”XY”YZ”Z

A’AB’BC’CD’DE’EF’FG’GH’HI’IJ’JK’KL’LM’MN’NO’OP’PQ’Q’RS’ST’TU’UV’VW’WX’XY’YZ’Z

a(ab(bc(cd(de(ef(fg(gh(hi(ij(jk(kl(lm(mn(no(op(pq(q(rs(st(tu(uv(vw(wx(xy(yz(z

a)ab)bc)cd)de)ef)fg)gh)hi)ij)jk)kl)lm)mn)no)op)pq)q)rs)st)tu)uv)vw)wx)xy)yz)z

a[ab[bc[cd[de[ef[fg[gh[hi[ij[jk[kl[lm[mn[no[op[pq[q[rs[st[tu[uv[vw[wx[xy[yz[z

a]ab]bc]cd]de]ef]fg]gh]hi]ij]jk]kl]lm]mn]no]op]pq]q]rs]st]tu]uv]vw]wx]xy]yz]z

a{ab{bc{cd{de{ef{fg{gh{hi{ij{jk{kl{lm{mn{no{op{pq{q{rs{st{tu{uv{vw{wx{xy{yz{z

a}ab}bc}cd}de}ef}fg}gh}hi}ij}jk}kl}lm}mn}no}op}pq}q}rs}st}tu}uv}vw}wx}xy}yz}z

A(AB(BC(CD(DE(EF(FG(GH(HI(IJ(JK(KL(LM(MN(NO(OP(PQ(Q(RS(ST(TU(UV(VW(WX(XY(YZ(Z

A)AB)BC)CD)DE)EF)FG)GH)HI)IJ)JK)KL)LM)MN)NO)OP)PQ)Q)RS)ST)TU)UV)VW)WX)XY)YZ)Z

A[AB[BC[CD[DE[EF[FG[GH[HI[IJ[JK[KL[LM[MN[NO[OP[PQ[Q[RS[ST[TU[UV[VW[WX[XY[YZ[Z

A]AB]BC]CD]DE]EF]FG]GH]HI]IJ]JK]KL]LM]MN]NO]OP]PQ]Q]RS]ST]TU]UV]VW]WX]XY]YZ]Z

A{AB{BC{CD{DE{EF{FG{GH{HI{IJ{JK{KL{LM{MN{NO{OP{PQ{Q{RS{ST{TU{UV{VW{WX{XY{YZ{Z

A}AB}BC}CD}DE}EF}FG}GH}HI}IJ}JK}KL}LM}MN}NO}OP}PQ}Q}RS}ST}TU}UV}VW}WX}XY}YZ}Z

1(12(23(34(45(56(67(78(89(90(0 1)12)23)34)45)56)67)78)89)90)0 1[12[23[34[45[56[67[78[89[90[0

1]12]23]34]45]56]67]78]89]90]0 1{12{23{34{45{56{67{78{89{90{0 1}12}23}34}45}56}67}78}89}90}0

a|ab|bc|cd|de|ef|fg|gh|hi|ij|jk|kl|lm|mn|no|op|pq|q|rs|st|tu|uv|vw|wx|xy|yz|z

a/ab/bc/cd/de/ef/fg/gh/hi/ij/jk/kl/lm/mn/no/op/pq/q/rs/st/tu/uv/vw/wx/xy/yz/z

a\ab\bc\cd\de\ef\fg\gh\hi\ij\jk\kl\lm\mn\no\op\pq\q\rs\st\tu\uv\vw\wx\xy\yz\z

a$ab$bc$cd$de$ef$fg$gh$hi$ij$jk$kl$lm$mn$no$op$pq$q$rs$st$tu$uv$vw$wx$xy$yz$z

a¢ab¢bc¢cd¢de¢ef¢fg¢gh¢hi¢ij¢jk¢kl¢lm¢mn¢no¢op¢pq¢q¢rs¢st¢tu¢uv¢vw¢wx¢xy¢yz¢z

a£ab£bc£cd£de£ef£fg£gh£hi£ij£jk£kl£lm£mn£no£op£pq£q£rs£st£tu£uv£vw£wx£xy£yz£z

a¥ab¥bc¥cd¥de¥ef¥fg¥gh¥hi¥ij¥jk¥kl¥lm¥mn¥no¥op¥pq¥q¥rs¥st¥tu¥uv¥vw¥wx¥xy¥yz¥z

aƒabƒbcƒcdƒdeƒefƒfgƒghƒhiƒijƒjkƒklƒlmƒmnƒnoƒopƒpqƒqƒrsƒstƒtuƒuvƒvwƒwxƒxyƒyzƒz'

a*ab*bc*cd*de*ef*fg*gh*hi*ij*jk*kl*lm*mn*no*op*pq*q*rs*st*tu*uv*vw*wx*xy*yz*z

a@ab@bc@cd@de@ef@fg@gh@hi@ij@jk@kl@lm@mn@no@op@pq@q@rs@st@tu@uv@vw@wx@xy@yz@z

a#ab#bc#cd#de#ef#fg#gh#hi#ij#jk#kl#lm#mn#no#op#pq#q#rs#st#tu#uv#vw#wx#xy#yz#z

a~ab~bc~cd~de~ef~fg~gh~hi~ij~jk~kl~lm~mn~no~op~pq~q~rs~st~tu~uv~vw~wx~xy~yz~z

a†ab†bc†cd†de†ef†fg†gh†hi†ij†jk†kl†lm†mn†no†op†pq†q†rs†st†tu†uv†vw†wx†xy†yz†z

a+ab+bc+cd+de+ef+fg+gh+hi+ij+jk+kl+lm+mn+no+op+pq+q+rs+st+tu+uv+vw+wx+xy+yz+z

a–ab–bc–cd–de–ef–fg–gh–hi–ij–jk–kl–lm–mn–no–op–pq–q–rs–st–tu–uv–vw–wx–xy–yz–z

a÷ab÷bc÷cd÷de÷ef÷fg÷gh÷hi÷ij÷jk÷kl÷lm÷mn÷no÷op÷pq÷q÷rs÷st÷tu÷uv÷vw÷wx÷xy÷yz÷z

a≤ab≤bc≤cd≤de≤ef≤fg≤gh≤hi≤ij≤jk≤kl≤lm≤mn≤no≤op≤pq≤q≤rs≤st≤tu≤uv≤vw≤wx≤xy≤yz≤z

a≥ab≥bc≥cd≥de≥ef≥fg≥gh≥hi≥ij≥jk≥kl≥lm≥mn≥no≥op≥pq≥q≥rs≥st≥tu≥uv≥vw≥wx≥xy≥yz≥z

a≈ab≈bc≈cd≈de≈ef≈fg≈gh≈hi≈ij≈jk≈kl≈lm≈mn≈no≈op≈pq≈q≈rs≈st≈tu≈uv≈vw≈wx≈xy≈yz≈z

a≠ab≠bc≠cd≠de≠ef≠fg≠gh≠hi≠ij≠jk≠kl≠lm≠mn≠no≠op≠pq≠q≠rs≠st≠tu≠uv≠vw≠wx≠xy≠yz≠z

a∑ab∑bc∑cd∑de∑ef∑fg∑gh∑hi∑ij∑jk∑kl∑lm∑mn∑no∑op∑pq∑q∑rs∑st∑tu∑uv∑vw∑wx∑xy∑yz∑z

aΩabΩbcΩcdΩdeΩefΩfgΩghΩhiΩijΩjkΩklΩlmΩmnΩnoΩopΩpqΩqΩrsΩstΩtuΩuvΩvwΩwxΩxyΩyzΩz

a√ab√bc√cd√de√ef√fg√gh√hi√ij√jk√kl√lm√mn√no√op√pq√q√rs√st√tu√uv√vw√wx√xy√yz√z

aµabµbcµcdµdeµefµfgµghµhiµijµjkµklµlmµmnµnoµopµpqµqµrsµstµtuµuvµvwµwxµxyµyzµz

a^ab^bc^cd^de^ef^fg^gh^hi^ij^jk^kl^lm^mn^no^op^pq^q^rs^st^tu^uv^vw^wx^xy^yz^z

a∂ab∂bc∂cd∂de∂ef∂fg∂gh∂hi∂ij∂jk∂kl∂lm∂mn∂no∂op∂pq∂q∂rs∂st∂tu∂uv∂vw∂wx∂xy∂yz∂z

a∞ab∞bc∞cd∞de∞ef∞fg∞gh∞hi∞ij∞jk∞kl∞lm∞mn∞no∞op∞pq∞q∞rs∞st∞tu∞uv∞vw∞wx∞xy∞yz∞z

a§ab§bc§cd§de§ef§fg§gh§hi§ij§jk§kl§lm§mn§no§op§pq§q§rs§st§tu§uv§vw§wx§xy§yz§z

a•ab•bc•cd•de•ef•fg•gh•hi•ij•jk•kl•lm•mn•no•op•pq•q•rs•st•tu•uv•vw•wx•xy•yz•z

a¶ab¶bc¶cd¶de¶ef¶fg¶gh¶hi¶ij¶jk¶kl¶lm¶mn¶no¶op¶pq¶q¶rs¶st¶tu¶uv¶vw¶wx¶xy¶yz¶z

1ª1 2ª2 3ª3 4ª4 5ª5 6ª6 7ª7 8ª8 9ª9 0ª0 1º1 2º2 3º3 4º4 5º5 6º6 7º7 8º8 9º9 0º0

aªabªbcªcdªdeªefªfgªghªhiªijªjkªklªlmªmnªnoªopªpqªqªrsªstªtuªuvªvwªwxªxyªyzªz

aºabºbcºcdºdeºefºfgºghºhiºijºjkºklºlmºmnºnoºopºpqºqºrsºstºtuºuvºvwºwxºxyºyzºz

*****************************************************************************
_____________________________________________________________________________

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

=============================================================================

—————————————————————————————————————————————————————————————————————————————

END

ebensorkin's picture

Sebastian, nice work!

To answer one of your questions: I don't know if I like your model or some of the ones I have been trying out better. I'll examine the question over the next day or two & get back to you with my opinion. In the meantime if you want to use anything in the file I just posted as a model for yourself feel free.

Chris, your model sounds quite cool as well I'll try it out as well.

Sebastian Nagel's picture

Hussah, this is a long list!

My program can not compete with that, it's more like a little help to generate and vary the most common combinations (lc/lc, uc/uc, uc/lc, ...) of your list, though it could be extended. But i think that wouldn't make much sense, it would be more painful to get the program generating what the user wants, than writing it oneself (or using your list).

I can't find bugs in your list right now, but as soon as I'll try some lines, they will be revealed.

Anyway: I don't know if every combination you did is really needed, like for example the mathematical operators + letters. If you do well thought-out standard metrics, I think they will be "good enough" for almost every combination. And if you want to relly go brute-brute-force and catch every possible mini-kerning-inconsistency in a modern unicode-font, you'll end up in psychiatric clinic... Go on! :)

Sebastiaan's picture

BTW: Is there a case where a letter comes after an ordinal? What about a number?

One could add logical kerning pairs for (3)rd, (2)nd, etc — but I am not too sure on it's really that useful in this test, but one could add them for completeness. Something along the lines of;

1st, 2nd, 3rd, 4th, 5th, 6th, 7th, 8th, 9th, 10th?

Nick Cooke's picture

Thanks Eben, that's a useful list - I had most of it, but it's a good add on.

Nick Cooke

ebensorkin's picture

Sebastian, yes, your & other number related lists would be a good idea. I think there are other models for counting too & other contractions in other languages. Nice one!

The thing is it's fairly easy to add variations. What I am puzzling over is where the usefulness lies most. In general I am favoring inclusion because as type designers we can cut out the bits we don't find useful and keep the bits we do.

What I am wondering about the most in diacritics and digraphs. I think it's very good to have them but I wonder if I should create seperate sections for them or integrate them. Right now I am leaning towards separation since the e & e umlaut use the same base e the e's design must come first it seems to me. But maybe there is a flaw in that thinking. Also you would end up with 13 lines of e in a row... How do you guys feel?

In any event I will continue to clean and expand this list and I will post it again when the next version is done.

Feel free to continue to crit the list & make requests.

I had been thinking of the list as a way to print test our fonts but do people want the list to use fontlab encoding too? Like '/Acircumflex'? I could maybe do that as well.

Does anybody have a list like that already?

Sebastiaan's picture

Well, Eben, if Sebastian Nagel is anything like me with python, I am sure he (or me) will be more than happy to write a script that replaces all normal diacritic characters for a set string, say /'nameinfontlab'. However, I often just paste unicode text into the metrics window with the 'type tool' selected. Fontlab then makes it all 'correct' for you, including ringel-s, long-s, and all diacritics, so if someone can report if this doesn't work in, say, Windows, then I'd be happy to volunteer making a script for that purpose.


The thing is it’s fairly easy to add variations. What I am puzzling over is where the usefulness lies most. In general I am favoring inclusion because as type designers we can cut out the bits we don’t find useful and keep the bits we do.

Well, I think you've hit the spot. I think we can include virtually anything, I always cut and hack into what I need or don't need; let people do the rest to suit their needs. It's better to have it and be able to cut it away, than having to make it yourself. I think it's a great effort.

ebensorkin's picture

I think there must be a file somewhere in fontlab with all the glyph strings. I should go dig for that.

That & go looking for numbering schemes from various countries.

Maybe we should have contractions too like

Dr. Mrs. Ms. PhD ibid. eg e.g. Co. Ltd. Inc. alc. ml. etc.

And medical and other professinal constructions like:

Prozac 20 mg i po qd
Olanzapine 5mg ii po bid
Drugname 5mg im q 6°

dezcom's picture

I could use some Prozac right now anyway :-)

ChrisL

Thomas Phinney's picture

The PUA is always difficult in InD because you have to use the glyph pallette. Onece you change fonts, anything selected from the glyph palette will change unless the 2 fonts glyphs are all named and ordered exactly the same.

I know of no circumstance whatsoever in which InDesign notices or cares what a glyph is named.

Glyph ordering only matters when InDesign falls back to glyph IDs, and this only occurs with glyphs inserted from the glyph palette when the glyph is both unencoded and not accessible by means of OT layout features from an encoded character.

Now, with regards to glyph IDs, things were different way back around InDesign 2.0, but that was two (soon to be three) versions ago.

Regards,

T

Sebastiaan's picture

Maybe we should have contractions too like
Dr. Mrs. Ms. PhD ibid. eg e.g. Co. Ltd. Inc. alc. ml. etc.

I'm surprised nobody has mentioned 'lol' and 'omg'? ;)

dezcom's picture

Thomas,
Here is the situation I am talking about. This has happened to me using both InD CS1 and InD CS2 (I have never owned the "way back" InD 2.0):
Using a .otf font where small caps are produced for extended Latin (CE), if I have text in lowercase CE diacritics text and apply the "Smallcaps" feature from InD CS, al is well and the glyphs convert to their proper smallcap form just as expected. If I now change the font to a new .otf font which still has the needed glyph set, all is fine and as expected. The problem comes if I begin by using the glyph pallette in the first place to select the smallcaps CE glyphs with diacritics directly from there, when I change the font, unless the glyphs are in the same order and number on the glyph pallette, the smallcaps glyphs change to whatever is in that location on the new font. For instance, an Omacron smallcaps might change to an Ecircumflex smallcap or whatever is in that location. This only occurs when the glyph is initially selected by using the glyph palette and changing fonts. The small caps don't have a standard unicode number so how is InD going to know what it is?

ChrisL

Quincunx's picture

I’m surprised nobody has mentioned ‘lol’ and ‘omg’? ;)

Nah, those need a ligature. ;)

Thomas Phinney's picture

The small caps don’t have a standard unicode number so how is InD going to know what it is?

When you insert a glyph via the glyph palette, InDesign is *supposed* to be storing it as the base character plus OpenType formatting - it backtracks from the glyph to figure out how one gets there, assuming it can be done. If this is failing in some cases, there's a bug. I'd be curious to see the two fonts involved so we can figure out what's going wrong.

Thanks,

T

dezcom's picture

I'll contact you offline Thomas and arrange that.

ChrisL

dezcom's picture

Eben,
Here is what I have been using. It is similar to some of yours.

ChrisL

aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayaza
aAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaPaQaRaSaTaUaVaWaXaYaZa
AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA
babbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzb
bAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb
BABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB
cacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczc
cAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc
CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXCYCZC
dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd
dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd
DADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD
eaebecedeeefegeheiejekelemeneoepeqereseteuevewexeyeze
eAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe
EAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVEWEXEYEZE
fafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzf
fAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfWfXfYfZf
FAFBFCFDFEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF
gagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzg
gAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg
GAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG
hahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh
hAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh
HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH
iaibicidieifigihiiijikiliminioipiqirisitiuiviwixiyizi
iAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi
IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI
jajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzj
jAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj
JAJBJCJDJEJFJGJHJIJJJKJLJMJNJOJPJQJRJSJTJUJVJWJXJYJZJ
kakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzk
kAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk
KAKBKCKDKEKFKGKHKIKJKKKLKMKNKOKPKQKRKSKTKUKVKWKXKYKZK
lalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzl
lAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl
LALBLCLDLELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL
mambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymzm
mAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm
MAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZM
nanbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn
nAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn
NANBNCNDNENFNGNHNINJNKNLNMNNNONPNQNRNSNTNUNVNWNXNYNZN
oaobocodoeofogohoiojokolomonooopoqorosotouovowoxoyozo
oAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo
OAOBOCODOEOFOGOHOIOJOKOLOMONOOOPOQOROSOTOUOVOWOXOYOZO
papbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxpypzp
pApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp
PAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP
qaqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzq
qAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq
QAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQQQRQSQTQUQVQWQXQYQZQ
rarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzr
rArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZr
RARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQRRRSRTRURVRWRXRYRZR
sasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszs
sAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTsUsVsWsXsYsZs
SASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS
tatbtctdtetftgthtitjtktltmtntotptqtrtstttutvtwtxtytzt
tAtBtCtDtEtFtGtHtItJtKtLtMtNtOtPtQtRtStTtUtVtWtXtYtZt
TATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTSTTTUTVTWTXTYTZT
uaubucudueufuguhuiujukulumunuoupuqurusutuuuvuwuxuyuzu
uAuBuCuDuEuFuGuHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu
UAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU
vavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzv
vAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv
VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV
wawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwwxwywzw
wAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw
WAWBWCWDWEWFWGWHWIWJWKWLWMWNWOWPWQWRWSWTWUWVWWWXWYWZW
xaxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzx
xAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx
XAXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVXWXXXYXZX
yaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyzy
yAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy
YAYBYCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZY
zazbzczdzezfzgzhzizjzkzlzmznzozpzqzrzsztzuzvzwzxzyzzz
zAzBzCzDzEzFzGzHzIzJzKzLzMzNzOzPzQzRzSzTzUzVzWzXzYzZz
ZAZBZCZDZEZFZGZHZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZYZZZ

Goran Soderstrom's picture

Great strings, I am seriously thinking to prepare one that could be used for kerning and spacing OT-features aswell, I will post it if I make ready in the near future.

What I mean is /oslash.small/hbar.small/ampersand.small/ ... etc.

ebensorkin's picture

That sounds great!

John Hudson's picture

This is similar to the approach I had to take to kerning Ethiopic characters in the Nyala font for MS. Usually, I kern using actual test words, so I can see the glyphs in real-world context, but I couldn't find any word lists for Ethiopic languages. So I resorted to this kind of table approach, using one of the more symetrically shaped Ethiopic syllables, ዘ, as a control glyph and kerning classes based on left- and right-side shape:

ዘዘሀሀሀዘዘ
ዘዘሁሀሁዘዘ
ዘዘሂሀሂዘዘ
ዘዘሃሀሃዘዘ
ዘዘሄሀሄዘዘ
ዘዘህሀህዘዘ
ዘዘሆሀሆዘዘ
ዘዘለሀለዘዘ
etc.

In the end, I had the equivalent of 63,105 kern pairs.

dezcom's picture

Here is a set of necklaces for Cyrillic metrics. Two are for setting side bearings and the rest are for kerning:

\043F\0430\043F\0431\043F\0432\043F\0433\043F\0434\043F\0435\043F\0436\043F\0437\043F\0438\043F\0439\043F\043A\043F\043B\043F\043C\043F\043D\043F\043E\043F\043F\0440\043F\0441\043F\0442\043F\0443\043F\0444\043F\0445\043F\0446\043F\0447\043F\043F\043F\0448\043F\043F\043F\0449\043F\044A\043F\044B\043F\044C\043F\044D\043F\044E\043F\044F\043F\0450\043F\0451\043F\0452\043F\0453\043F\0454\043F\0455\043F\0456\043F\0457\043F\0458\043F\0459\043F\045A\043F\045B\043F\045C\043F\045D\043F\045E\043F\045F\043F\0463\043F\0473\043F\0475\043F\0491\043F

\043E\0430\043E\0431\043E\0432\043E\0433\043E\0434\043E\0435\043E\0436\043E\0437\043E\0438\043E\0439\043E\043A\043E\043B\043E\043C\043E\043D\043E\043E\043E\043E\0440\043E\0441\043E\0442\043E\0443\043E\0444\043E\0445\043E\0446\043E\0447\043E\043E\043E\0448\043E\043E\043E\0449\043E\044A\043E\044B\043E\044C\043E\044D\043E\044E\043E\044F\043E\0450\043E\0451\043E\0452\043E\0453\043E\0454\043E\0455\043E\0456\043E\0457\043E\0458\043E\0459\043E\045A\043E\045B\043E\045C\043E\045D\043E\045E\043E\045F\043E\0463\043E\0473\043E\0475\043E\0491\043E

\0433\0430\0433\0431\0433\0432\0433\0433\0433\0434\0433\0435\0433\0436\0433\0437\0433\0438\0433\0439\0433\043A\0433\043B\0433\043C\0433\043D\0433\043E\0433\0433\0440\0433\0441\0433\0442\0433\0443\0433\0444\0433\0445\0433\0446\0433\0447\0433\0433\0433\0448\0433\0433\0433\0449\0433\044A\0433\044B\0433\044C\0433\044D\0433\044E\0433\044F\0433\0450\0433\0451\0433\0452\0433\0453\0433\0454\0433\0455\0433\0456\0433\0457\0433\0458\0433\0459\0433\045A\0433\045B\0433\045C\0433\045D\0433\045E\0433\045F\0433\0463\0433\0473\0433\0475\0433\0491\0433

\0434\0430\0434\0431\0434\0432\0434\0433\0434\0434\0434\0435\0434\0436\0434\0437\0434\0438\0434\0439\0434\043A\0434\043B\0434\043C\0434\043D\0434\043E\0434\0434\0440\0434\0441\0434\0442\0434\0443\0434\0444\0434\0445\0434\0446\0434\0447\0434\0434\0434\0448\0434\0434\0434\0449\0434\044A\0434\044B\0434\044C\0434\044D\0434\044E\0434\044F\0434\0450\0434\0451\0434\0452\0434\0453\0434\0454\0434\0455\0434\0456\0434\0457\0434\0458\0434\0459\0434\045A\0434\045B\0434\045C\0434\045D\0434\045E\0434\045F\0434\0463\0434\0473\0434\0475\0434\0491\0434

\043B\0430\043B\0431\043B\0432\043B\0433\043B\0434\043B\0435\043B\0436\043B\0437\043B\0438\043B\0439\043B\043A\043B\043B\043B\043C\043B\043D\043B\043E\043B\043B\0440\043B\0441\043B\0442\043B\0443\043B\0444\043B\0445\043B\0446\043B\0447\043B\043B\043B\0448\043B\043B\043B\0449\043B\044A\043B\044B\043B\044C\043B\044D\043B\044E\043B\044F\043B\0450\043B\0451\043B\0452\043B\0453\043B\0454\043B\0455\043B\0456\043B\0457\043B\0458\043B\0459\043B\045A\043B\045B\043B\045C\043B\045D\043B\045E\043B\045F\043B\0463\043B\0473\043B\0475\043B\0491\043B

\044A\0430\044A\0431\044A\0432\044A\0433\044A\0434\044A\0435\044A\0436\044A\0437\044A\0438\044A\0439\044A\043A\044A\043B\044A\043C\044A\043D\044A\043E\044A\044A\0440\044A\0441\044A\0442\044A\0443\044A\0444\044A\0445\044A\0446\044A\0447\044A\044A\044A\0448\044A\044A\044A\0449\044A\044A\044A\044B\044A\044C\044A\044D\044A\044E\044A\044F\044A\0450\044A\0451\044A\0452\044A\0453\044A\0454\044A\0455\044A\0456\044A\0457\044A\0458\044A\0459\044A\045A\044A\045B\044A\045C\044A\045D\044A\045E\044A\045F\044A\0463\044A\0473\044A\0475\044A\0491\044A

\0475\0430\0475\0431\0475\0432\0475\0433\0475\0434\0475\0435\0475\0436\0475\0437\0475\0438\0475\0439\0475\043A\0475\043B\0475\043C\0475\043D\0475\043E\0475\0475\0440\0475\0441\0475\0442\0475\0443\0475\0444\0475\0445\0475\0446\0475\0447\0475\0475\0475\0448\0475\0475\0475\0449\0475\044A\0475\044B\0475\044C\0475\044D\0475\044E\0475\044F\0475\0450\0475\0451\0475\0452\0475\0453\0475\0454\0475\0455\0475\0456\0475\0457\0475\0458\0475\0459\0475\045A\0475\045B\0475\045C\0475\045D\0475\045E\0475\045F\0475\0463\0475\0473\0475\0475\0475\0491\0475

ChrisL

core's picture

You guys are funny. I only test the stuff I know usually needs a looking over, like e.g. "r." "AV" "LT" "TJ" and so on. Sure "Yq" and "DX" probably would need kerning pairs, but is there a need for it, are there actually real words starting with Yq and DX?

ebensorkin's picture

Thanks for that!

BTW - are you are saying you kept a text file with the glyphs set as their slashunicode# value so to more readily test the pairs?

dezcom's picture

Core,
When you are doing search and replace patterns, it is easier to do them all than to find out the usage of letter combinations in every language, organic chemistry formula, abbreviations, or product name. Feel free to just dump what you can't use. Modifications are permitted. There is no EULA with these test strings :-)

ChrisL

dezcom's picture

Yes Eben. This helps with foreign scripts and 4 digit names are easier to deal with than typing the whole long salamander. I just pick the "problem child" glyphs that tend to need kerning and search and replace the slash with that glyph name and a slash. The first two are straightside and roundside symetrical glyphs which I use to set sidebearings.

ChrisL

ebensorkin's picture

That makes a great deal of sense.

If there was a brute force method available for free - would you use it?

dezcom's picture

Why not?

ChrisL

hrant's picture

Yquem is a wine-producing region in France. I've actually seen a label of it in
a catalog, set in Minion, which I could tell doesn't have a "Yq" kern, so it did
matter (well, as much as type ever can I guess). BTW, Ypres is a famous WWI battlefield (featured among other places in a Monty Python skit), but of course
as a rule "Yp" needs less kerning than "Yq". :-)

http://en.wikipedia.org/wiki/DX

That said, brute force is generally for pack animals. When I go crazy with kerning
(like I did with Mana, which has ~1500 pairs, a high amount considering it's just a
plain ASCII encoding) I prefer calling it "exceptionless" kerning. :-) But it's still not
brute force, since it relies on lateral profile divergence, not merely being there.

hhp

hrant's picture

Correction: I checked what I'd once written (by entering "Yquem kerning"
into Google - god bless that engine) and it turns out that Minion does have
a "Yq" pair, but apparently not a "Yg" pair (example: Ygrec).

hhp

ebensorkin's picture

Brute force is not for kerning - it's to make it easy to see what you have. What you do with it designwise, kerning wise ( or otherwise ) is up to you.

dezcom's picture

Eben,
It has to be multi-lingual though so I can do "Ode on a Grecian Kern" :-P

ChrisL

Goran Soderstrom's picture

I only test the stuff I know usually needs a looking over

Since class kerning is SO elegant, the letter q could easily fit in the "o2" class and then you automatically have a kerning pair for Yq based on Yo.

hrant's picture

> it’s to make it easy to see what you have.

When I do my base spacing I already know what I have for the lion's share of combinations. Which is exactly how so many people get away with meager kerning (not that I admire that).

> you automatically have a kerning pair for Yq based on Yo

Which will automatically NOT take into account that "q" is almost always
followed by "u"... Let's not confuse elegance with cost-effectiveness.

hhp

ebensorkin's picture

It has to be multi-lingual though so I can do “Ode on a Grecian Kern” :-P

I would be more that thrilled if you or someone elese took up the task of the greek and or cyrillic. Then again, if I can wrangle the Latin, then maybe with your tutoring I might be able to do the greek. Will you be my tutor when it comes time?

Up until today I had only planned on working on the Latin since there is already enough to bite off there - the whole question of how best to organise diacritics is something I am still thinking about, although I am starting to lean towards a core plus others approach. But then the question is organize the others by langiage & repeat yourself alot like I am doing in the quick overview thead, or just list them in a semi-alphabetical order... In any event if you have a prefence please let me know. I can't promise to do what you suggest but I will think about it seriously. Also, whatever I do with it you are welcome to adapt the finished file to suit yourself.

Since class kerning is SO elegant, the letter q could easily fit in the “o2” class and then you automatically have a kerning pair for Yq based on Yo.

This may be true quite often but lots of kinds of type ( decorative, hand writen etc ) have too much variety to know that this will be the case every time. Which is another reason to have the brute force around to see what your getting. I think so anyway...

The real thing that this brute force fails to address is contextual altrenates. But they can be added to the file as needed.

Let’s not confuse elegance with cost-effectiveness.
Hrant, even though the tool is 'dumb' I think it can still be used in smart ways. It is true that for may users there will be sections of dead wood. But on the other hand, I don't think that truncating the q & Q section to include just a 'u' is a good idea. Not least because of Latinized Chinese ( Pin Yin ) and other non European uses of Latin glyphs. What do you think? Would you consider using a tool like this or do you already have a tool like this?

hrant's picture

Eben, I was referring to Goran's use of "elegant" above.

> I don’t think that truncating the q & Q
> section to include just a ‘u’ is a good idea.

Me neither. I was talking not of ignoring, but of weighting.

I mainly use a combination of three things:
Control strings, frequent pairs, and problematic pairs.

hhp

Nick Shinn's picture

“Ode on a Grecian Kern”

Is there any reason not to mix scripts in a OT kerning class?

dezcom's picture

I don't know how many words mix scripts. You might be adding a lot of Gamma kern pairs for no reason.
Gamma eogonek comes to mind :-)

ChrisL

Syndicate content Syndicate content