Geen upload, 100% lokaal, geen account

Artikel

Woorden, tekens en hoofdlettergebruik: hoe tekst tellen echt werkt

Tekst tellen klinkt als de ene taak waar een computer niets fout aan kan doen, en toch geven twee tools doodleuk verschillende getallen voor dezelfde alinea, kan een emoji je 70 sms-tekens kosten, en betekent «280 tekens» op X niet wat het lijkt. Achter de dagelijkse klusjes van binnen een limiet schrijven, variabelen hernoemen of een mockup vullen, zitten een paar regels die het waard zijn om te kennen. Dit artikel loopt ze langs, met de kleine tekstools op deze site als werkende voorbeelden.

Wat telt als een woord

De meeste tellers, de onze inbegrepen, definiëren een woord zoals typisten dat doen: een reeks zichtbare tekens tussen spaties of regeleinden. Die ene regel verklaart al de meeste meningsverschillen. Is «sociaal-economisch» één woord of twee? Bij een indeling op spaties: één. Is «z'n» één woord of twee? Eén. Getallen, URL's en e-mailadressen tellen elk ook als één woord. De conventie valt uiteen voor talen die zonder spaties worden geschreven: in het Chinees of Japans is er geen spatie om op te splitsen, dus een «woordentelling» heeft geen betekenis en kun je beter met de tekentelling werken. Schattingen van de leestijd stapelen er een tweede conventie bovenop: onze woordenteller deelt het aantal woorden door 200 woorden per minuut, een gangbaar gemiddelde voor stil lezen door volwassenen, dus behandel het resultaat als een planningscijfer, geen belofte.

Een teken is niet altijd één symbool

Tekentellingen zijn troebeler, omdat Unicode-tekst lagen heeft. Wat jij waarneemt als één teken (een grafeem) kan zijn opgebouwd uit meerdere codepunten, en elk codepunt neemt één of twee van de 16-bit eenheden in die de length-eigenschap van JavaScript telt. De grijnzende emoji is één grafeem maar twee van die eenheden, dus een naïeve teller zegt 2. Een familie-emoji, opgebouwd door meerdere persoon-emoji's samen te voegen, is één grafeem, vijf codepunten en acht eenheden. Zelfs gewone tekst heeft dit probleem: «café» kan worden opgeslagen met é als één codepunt of als een e gevolgd door een combinerend accent, identiek op het scherm maar verschillend in telling. Daarom zijn twee tellers het niet met elkaar eens: ze meten verschillende lagen. De regels voor het groeperen van codepunten tot door de gebruiker waargenomen tekens zijn gestandaardiseerd in Unicode's tekstsegmentatiebijlage (UAX #29), en goed gemaakte tellers volgen die.

Drie strings gemeten op drie Unicode-lagen: een grijnzende emoji is 1 grafeem en 2 UTF-16-eenheden, een familie-emoji is 1 grafeem, 5 codepunten en 8 eenheden, en een ontlede café is 4 grafemen maar 5 codepunten

De limieten waar je eigenlijk voor telt

Tekenlimieten zijn waar tellen geld wordt. Een sms draagt 160 tekens in het compacte GSM-7-alfabet, maar één enkel teken daarbuiten (een emoji, of een letter die het alfabet niet heeft) schakelt het hele bericht om naar UCS-2 en de limiet zakt naar 70; lange berichten worden opgesplitst in delen van 153 of 67 tekens, elk apart gefactureerd. X staat 280 tekens per post toe, maar weegt ze: elke URL telt als 23, ongeacht de werkelijke lengte, en de meeste emoji's en CJK-tekens tellen als 2. Zoekfragmenten hebben in plaats daarvan zachte limieten: Google kapt titels en beschrijvingen af op pixelbreedte, dus de vertrouwde cijfers van 60 tekens voor de titel en 155 voor de beschrijving zijn werkconventies, geen garanties. Wanneer een limiet er echt toe doet, tel dan volgens dezelfde regels die het platform gebruikt, en laat marge over.

Hoofdlettergebruik is een conventie, en elke stijl heeft een thuis

Hoofdlettergebruik veranderen klinkt triviaal totdat je de conventies tegenkomt die zich erop stapelen. Proza kent Title Case, favoriet bij Amerikaanse krantenkoppen, en sentence case, dat de meeste Europese stijlgidsen verkiezen. Code heeft zijn eigen families: camelCase voor variabelen in JavaScript en Java, PascalCase voor namen van klassen en componenten, snake_case in Python en databases, SCREAMING_SNAKE_CASE voor constanten, en kebab-case voor CSS-klassen, bestandsnamen en URL-slugs, waar kleine letters de klassieke valkuil vermijden van links die alleen verschillen in hoofdlettergebruik. Een handjevol identifiers handmatig converteren is prima; een lijst van tachtig converteren is hoe typefouten ontstaan. Een converter voor hoofdlettergebruik past de omzetting mechanisch toe, inclusief de lastige onderdelen zoals beslissen wat er met afkortingen en bestaande scheidingstekens gebeurt.

De zin user profile page geschreven in zes stijlen van hoofdlettergebruik: camelCase, PascalCase, snake_case, SCREAMING_SNAKE_CASE, kebab-case en Title Case

Vultekst, en bestanden die je telefoon weigert te openen

Nog twee klusjes maken de set compleet. Lay-outs worden beoordeeld met vultekst omdat echte zinnen de aandacht naar hun betekenis trekken; lorem ipsum werkt juist omdat het bijna, maar niet helemaal, leesbaar Latijn is. Onze generator maakt het per alinea, zin of woord, zodat een mockup kan worden gevuld met realistische lengtes in plaats van één geplakt blok dat wordt herhaald. En wanneer iemand een .md-, .json-, .csv- of .log-bestand stuurt dat je telefoon weigert te openen, toont een browsergebaseerde tekstviewer het zonder een editor te installeren of het bestand naar een of andere conversiesite door te sturen. Al het bovenstaande, tellen inbegrepen, draait volledig in je browser: de tekst verlaat je apparaat nooit, wat meer telt dan gewoonlijk wanneer wat je meet een concept, een contract of een log vol interne paden is.

Tools in dit artikel

Veelgestelde vragen

Hoeveel woorden passen op een pagina?

De uitgeversconventies gaan uit van ongeveer 500 woorden voor een pagina met enkele regelafstand en ongeveer 250 voor een pagina met dubbele regelafstand, uitgaande van een standaard lettertype van 12 punt op A4- of letterpapier. Echte documenten wijken van die cijfers af bij elke verandering van lettertype, marge of kop, en daarom geven opdrachten en inzendingen steeds vaker een woordentelling op in plaats van een paginatelling. Als je de tekst al hebt, tel die dan rechtstreeks en sla de schatting over; de paginaconventies zijn alleen nuttig voordat de tekst bestaat.

Wat betekent lorem ipsum eigenlijk?

Het is door elkaar gehusseld Latijn, geen wartaal. De standaardpassage is geknipt en herschikt uit De finibus bonorum et malorum van Cicero, een filosofische tekst uit 45 v.Chr.; het fragment «dolorem ipsum» betekent «de pijn zelf». Het husselen is precies de bedoeling: de tekst lijkt op natuurlijke taal, met aannemelijke woordlengtes en zinsritme, maar verzet zich tegen lezen, zodat kijkers de lay-out beoordelen in plaats van de inhoud. De moderne verspreiding ervan wordt meestal toegeschreven aan Letraset-transferbladen in de jaren zestig en dtp-software in de jaren tachtig.

Waarom telt een platform minder tekens dan mijn teller?

Omdat platforms tellen met hun eigen wegingen. X begint bij 280, maar rekent elke URL als 23 tekens en de meeste emoji's en CJK-tekens als 2 elk. Sms-gateways schakelen het hele bericht van het 160-tekens GSM-7-alfabet naar de 70-tekens UCS-2-modus zodra één teken dat vereist. En elk platform kan code-units tellen in plaats van grafemen, dus één familie-emoji alleen al kan 8 eenheden van de limiet opslokken. Wanneer het getal op de knop niet overeenkomt met je teller, wint de regel van het platform; schrijf met marge of controleer met de teller van het platform zelf voordat je verstuurt.

Bronnen