2009-06-26 10 views
8

Jestem zainteresowany generowania krótkich kodów (do 6 znaków), które są jednoznaczne dla ludzi czytelności:Czy możesz polecić jakieś informacje na temat najmniej dwuznacznych liter/cyfr?

tj 2Z8B5S byłby bardzo zły kod, ponieważ B wygląda dużo jak 8 i 2 wygląda bardzo podobnie do Z , itp.

Dobry kod będzie coś w stylu: AE37HT, powiedz.

Oczywiście, mógłbym spróbować sam to rozgryźć, ale chciałem sprawdzić, czy są jakieś badania ludzi takich jak NASA czy cokolwiek innego.

Jeśli masz również odniesienia do wpływu czytelności na kolor, krój pisma, rozmiar i odległość od podglądu (patrzę na coś potencjalnie około 2,5 cm z odległości około 6 stóp), to pomocny również. Na monitorze lub ewentualnie w druku.

znalazłem ten zestaw wytycznych, ale nie ma żadnych empirycznych wyniki, które mogę przekształcić się w tabeli do generowania kodów:

http://www.usabilitysciences.com/usability-of-codes-passwords-numbers-and-letters/

+0

jest ponownie użyteczność ważna na ekranie komputera, gdy jest prawdopodobne, że dostępna jest funkcja kopiowania/wklejania? – TheTXI

+0

Jeśli mają być odczytywane z odległości 6 stóp, myślę, że można założyć, że to nie będzie szczególnie interaktywne ... lub jeśli tak, może być w systemie gier, który * nie * mieć c'n'p. To na pewno nie brzmi jak przeciętna strona internetowa ... –

+0

Czy zdrowy rozsądek nie wystarczy? Wystarczy spojrzeć na każdą literę i numer i usunąć wszystkie potencjalnie niejednoznaczne znaki ze swojego zestawu. – mbillard

Odpowiedz

7

Szczerze mówiąc, myślę, że najważniejszym czynnikiem tutaj wybiera właściwą czcionkę.

Jeśli twoim celem jest czysto czytelność, będzie to kwestia zbieranie czcionkę, która jest najlepiej:

1) o stałej szerokości. W przypadku wybierania losowych liczb/liter, stała szerokość pomaga ogromnie, ponieważ kerning nie zmienia się w miarę poruszania się po czcionce.

2) Użyj czcionki z oddzielnymi wyglądami typu 0/O - zdecydowanie narobią bałaganu. Poszukaj innych kombinacji liter/liczb, które są podobne. Potencjalnie, zostaw 0/O poza miksem tylko z tego powodu.

3) Wybierz czcionkę z subtelnymi szeryfami i zmianami wagi.

Kilka wskazówek dotyczących czytelności znajduje się pod adresem this page.

Przy pomocy właściwej czcionki, wydaje mi się, że można wybrać dowolną kombinację liter/liczb i jasno ją zrozumieć (inną niż potencjalnie 0 i O). Wierzę, że 8/B, 5/S i inne próbki byłyby jasne we właściwej czcionce.

Inną rzeczą, którą można rozważyć, byłoby użycie jednego koloru dla liter i drugiego dla liczb - dałoby to wskazówki potencjalnie niejednoznacznym kombinacjom liczb/liter. Uczyniłbym to jednak subtelnym sygnałem, ponieważ drastyczna zmiana koloru zwróci uwagę na litery lub cyfry, co zaszkodzi ogólnej czytelności.


Edit po przeczytaniu Twojego komentarza do innej odpowiedzi:

Potrzebuję tylko kilka tysięcy kodów, więc nie jestem strasznie zaniepokojony wielkości domeny

Jeśli tak jest w tym przypadku, zalecałbym pozostawienie całego zestawu liczb i selektywne dodawanie liter, które nie mają wizualnego (lub dźwiękowego, jeśli czytasz te) podobieństwa do liczb. Dzięki 6 cyfrom, nawet z liczbami, masz więcej możliwości kodu, niż potrzebujesz. Selektywne dodawanie liter ułatwia rozróżnianie będzie łatwiejsze niż próba selektywnego usunięcia niektórych.Prawdopodobnie trzymałbym się cyfr 1-9, A, Z, R, W i innych liter, które nie pasują do liczb.

1

Jeśli masz wybór, możesz mieć wpływ na to poprzez zmianę czcionek. Na przykład wiele czcionek zorientowanych programowo celowo obcina zero, używa różnych kształtów dla I, I i I, i tak dalej. Jak pamiętam, czcionki szeryfowe są zwykle używane również w tym celu. Zgaduję - nie mogę tego poprzeć - że jest to również powód, dla którego wiele starszych książek ma "figurki tekstowe", cyfry o różnych wysokościach, które lepiej płyną ze strony i (rzekomo) zwiększają czytelność. (Zobacz http://en.wikipedia.org/wiki/Text_figures - tak, prawie zacytuję je dosłownie.)

+0

Mam pełną kontrolę nad czcionką. Zastanawiam się nad uderzeniem wielu liter i cyfr. Inną możliwością jest ustawienie jej tak, aby zawsze była to litera-liczba-litera-liczba itp. Istnieje więc pewna liczba wzorów, aby pomóc użytkownikom. –

3

Zgadzam się z Reedem, że najlepszym rozwiązaniem będzie czcionka.

przypadku próby wyeliminowania numery wieloznaczne, można stracić 1 (wygląda małymi l) 8 (kapitał B) i 0 (górna lub małymi literami O), która wynosi 30% dostępnych znaków numerycznych. To dużo. Możesz nawet mieć problemy z 6 i kapitałem G.

Eliminowanie podobnie wyglądających liter i cyfr naprawdę ograniczy Twoje wybory.

Oczywiście, nawet z czcionką, są pewne podobieństwa - zero i kapitał O zawsze będą dawać ci problemy.

Co powiecie na Courier New? Lub coś podobnego. Serif. Pojedynczo rozmieszczone.

Jednym z moich ulubionych przykładów czcionek jest nazwa stanu Illinois. Po prostu spróbuj wpisać tekst w polu tekstowym za pomocą Arial. Umieść tam trzy L: Illlinois. Następnie spróbuj zobaczyć, że są 3 L. I powodzenia, przesuwając punkt wstawiania we właściwe miejsce. O wiele łatwiej w czcionce Courier: Illlinois.

Istnieje powód, dla którego StackOverflow i inne witryny wyświetlające kod używają czcionki Courier-like do wyświetlania kodu. I dlaczego SO i inne strony internetowe i oprogramowanie (Apple) używają czcionek Courier-like dla pól wprowadzania danych (pola tekstowe, tekstowe itp.)

+0

Dziękuję, potrzebuję tylko kilku tysięcy kodów, więc nie martwię się zbytnio wielkością domeny. Rozważam też używanie liczb, więc litery zwiększyłyby tylko przestrzeń. –

2

Co powiecie na metodę cofania podczas generowania kodów, w przypadku której unieważni się rozwiązanie, które nie działa? t pasują do zestawu reguł, np. nie mają podobnie wyglądających znaków obok siebie Jeśli możesz zidentyfikować wszystkie niechciane pary znaków i oznacz flagę jako nieważne jakiekolwiek rozwiązania, które je zawierają, myślę, że jest to dość nieostrożne:

7

Jeśli nie chcesz się martwić o czcionki. Oto lista, którą wymyśliłem (z wyjątkiem małych liter):

'0' can look like a 'O' 
'1' can look like a 'l' 
'2' can look like a 'Z' 
'5' can look like a 'S' 
'8' can look like a 'B' 
'B' can look like a '8' 
'I' can look like a '1' 
'J' can look like a '1' 
'L' can look like a '1' 
'O' can look like a '0' 
'S' can look like a '5' 
'T' can look like a '1' 
'Z' can look like a '2' 
Powiązane problemy