Χωρίς μεταφόρτωση, 100% τοπικά, χωρίς λογαριασμό

Άρθρο

Λέξεις, χαρακτήρες και πεζά-κεφαλαία: πώς λειτουργεί πραγματικά η μέτρηση κειμένου

Η μέτρηση κειμένου ακούγεται σαν η μία δουλειά που δεν μπορεί να κάνει λάθος ένας υπολογιστής, κι όμως δύο εργαλεία μπορούν άνετα να δώσουν διαφορετικούς αριθμούς για την ίδια παράγραφο, ένα emoji μπορεί να σας κοστίσει 70 χαρακτήρες SMS, και τα "280 χαρακτήρες" στο X δεν σημαίνουν αυτό που φαίνεται. Πίσω από τις καθημερινές εργασίες όπως η γραφή μέσα σε ένα όριο, η μετονομασία μεταβλητών ή η συμπλήρωση ενός mockup κρύβονται λίγοι κανόνες που αξίζει να γνωρίζετε. Αυτό το άρθρο τους εξετάζει έναν έναν, χρησιμοποιώντας τα μικρά εργαλεία κειμένου αυτού του site ως πρακτικά παραδείγματα.

Τι μετράει ως λέξη

Οι περισσότεροι μετρητές, συμπεριλαμβανομένου του δικού μας, ορίζουν τη λέξη όπως το έκαναν οι δακτυλογράφοι: μια αλληλουχία ορατών χαρακτήρων ανάμεσα σε κενά ή αλλαγές γραμμής. Μόνο αυτός ο κανόνας εξηγεί τις περισσότερες αποκλίσεις. Το "state-of-the-art" στα αγγλικά είναι μία λέξη ή τέσσερις; Με διαχωρισμό βάσει κενών, είναι μία. Οι αριθμοί, τα URL και οι διευθύνσεις email μετρούν επίσης το καθένα ως μία λέξη. Αυτή η σύμβαση καταρρέει για γλώσσες που γράφονται χωρίς κενά: στα κινέζικα ή τα ιαπωνικά δεν υπάρχει κενό για να γίνει ο διαχωρισμός, οπότε ένας "αριθμός λέξεων" δεν έχει ουσιαστικό νόημα και καλύτερα να δουλεύετε με αριθμό χαρακτήρων. Οι εκτιμήσεις χρόνου ανάγνωσης προσθέτουν μια δεύτερη σύμβαση από πάνω: ο μετρητής λέξεων μας διαιρεί τον αριθμό λέξεων με 200 λέξεις το λεπτό, έναν συνηθισμένο μέσο όρο για τη σιωπηλή ανάγνωση ενηλίκων, οπότε αντιμετωπίστε το αποτέλεσμα ως ένδειξη προγραμματισμού και όχι ως υπόσχεση.

Ένας χαρακτήρας δεν είναι πάντα ένα σύμβολο

Η μέτρηση χαρακτήρων είναι πιο θολή, γιατί το κείμενο Unicode έχει επίπεδα. Αυτό που αντιλαμβάνεστε ως έναν χαρακτήρα (γράφημα) μπορεί στην πραγματικότητα να αποτελείται από πολλά code points, και κάθε code point καταλαμβάνει μία ή δύο από τις μονάδες των 16 bit που μετράει η ιδιότητα length της JavaScript. Το emoji του πλατύ χαμόγελου είναι ένα γράφημα αλλά δύο τέτοιες μονάδες, οπότε ένας απλοϊκός μετρητής θα πει 2. Ένα emoji οικογένειας, φτιαγμένο από τον συνδυασμό πολλών emoji ανθρώπων, είναι ένα γράφημα, πέντε code points και οκτώ μονάδες. Ακόμα και το απλό κείμενο έχει αυτό το πρόβλημα: το "café" μπορεί να αποθηκευτεί με το é ως ένα code point ή ως e ακολουθούμενο από έναν συνδυαστικό τόνο, πανομοιότυπο στην οθόνη αλλά διαφορετικό στη μέτρηση. Γι' αυτό δύο μετρητές διαφωνούν: μετρούν διαφορετικά επίπεδα. Οι κανόνες για την ομαδοποίηση των code points σε χαρακτήρες όπως τους αντιλαμβάνεται ο χρήστης είναι τυποποιημένοι στο παράρτημα τμηματοποίησης κειμένου του Unicode (UAX #29), και οι σωστά υλοποιημένοι μετρητές το ακολουθούν.

Τρεις συμβολοσειρές μετρημένες σε τρία επίπεδα Unicode: το emoji πλατύ χαμόγελο είναι 1 γράφημα και 2 μονάδες UTF-16, το emoji οικογένειας είναι 1 γράφημα, 5 code points και 8 μονάδες, και το αναλυμένο café είναι 4 γραφήματα αλλά 5 code points

Τα όρια για τα οποία πραγματικά μετράτε

Τα όρια χαρακτήρων είναι το σημείο όπου η μέτρηση μετατρέπεται σε χρήμα. Ένα SMS μεταφέρει 160 χαρακτήρες στο συμπαγές αλφάβητο GSM-7, αλλά ένας μόνο χαρακτήρας εκτός αυτού (ένα emoji, ή ένα γράμμα που λείπει από το αλφάβητο) μεταβάλλει ολόκληρο το μήνυμα σε UCS-2 και το όριο πέφτει στους 70· τα μεγάλα μηνύματα χωρίζονται σε τμήματα των 153 ή 67 χαρακτήρων, καθένα χρεωμένο ξεχωριστά. Το X επιτρέπει 280 χαρακτήρες ανά δημοσίευση, αλλά τους σταθμίζει: κάθε URL μετράει ως 23 χαρακτήρες ανεξαρτήτως πραγματικού μήκους, και τα περισσότερα emoji και χαρακτήρες CJK (κινέζικα, ιαπωνικά, κορεατικά) μετρούν ως 2. Τα αποσπάσματα αναζήτησης έχουν αντ' αυτού ήπια όρια: η Google περικόπτει τίτλους και περιγραφές βάσει πλάτους σε pixel, οπότε τα γνωστά νούμερα των 60 χαρακτήρων για τον τίτλο και 155 για την περιγραφή είναι λειτουργικές συμβάσεις και όχι εγγυήσεις. Όταν ένα όριο έχει πραγματικά σημασία, μετρήστε με τους ίδιους κανόνες που χρησιμοποιεί η πλατφόρμα και αφήστε περιθώριο.

Τα πεζά-κεφαλαία είναι σύμβαση, και κάθε στιλ έχει τη θέση του

Η αλλαγή πεζών-κεφαλαίων ακούγεται ασήμαντη μέχρι να συναντήσετε τις συμβάσεις που έχουν στοιβαχτεί πάνω της. Πρόκειται για κείμενο σε λατινικό αλφάβητο, όπως αναγνωριστικά κώδικα ή αγγλικούς τίτλους. Ο πεζός λόγος γνωρίζει το Title Case, που προτιμούν οι αμερικανικοί τίτλοι ειδήσεων, και το sentence case, που προτιμούν οι περισσότεροι ευρωπαϊκοί οδηγοί ύφους. Ο κώδικας έχει τις δικές του οικογένειες: camelCase για μεταβλητές σε JavaScript και Java, PascalCase για ονόματα κλάσεων και components, snake_case σε Python και βάσεις δεδομένων, SCREAMING_SNAKE_CASE για σταθερές, και kebab-case για κλάσεις CSS, ονόματα αρχείων και URL slugs, όπου τα πεζά αποφεύγουν την κλασική παγίδα των συνδέσμων που διαφέρουν μόνο στα πεζά-κεφαλαία. Η χειροκίνητη μετατροπή μερικών αναγνωριστικών είναι εντάξει· η μετατροπή μιας λίστας ογδόντα είναι ο τρόπος με τον οποίο γεννιούνται τα τυπογραφικά λάθη. Ένας μετατροπέας πεζών-κεφαλαίων εφαρμόζει αυτόν τον μετασχηματισμό μηχανικά, συμπεριλαμβανομένων δύσκολων σημείων όπως το τι συμβαίνει με τα ακρωνύμια και τους υπάρχοντες διαχωριστές.

Η φράση user profile page γραμμένη σε έξι στιλ πεζών-κεφαλαίων: camelCase, PascalCase, snake_case, SCREAMING_SNAKE_CASE, kebab-case και Title Case

Κείμενο πλήρωσης, και αρχεία που το κινητό σας αρνείται να ανοίξει

Δύο ακόμη εργασίες συμπληρώνουν αυτό το σύνολο. Οι διατάξεις κρίνονται με κείμενο-γεμιστικό γιατί οι πραγματικές προτάσεις τραβούν την προσοχή προς το νόημά τους· το lorem ipsum λειτουργεί ακριβώς επειδή είναι σχεδόν, αλλά όχι απόλυτα, αναγνώσιμα λατινικά. Η γεννήτρια μας το παράγει ανά παράγραφο, πρόταση ή λέξη, ώστε ένα mockup να μπορεί να γεμίσει σε ρεαλιστικά μήκη αντί για ένα και μοναδικό επικολλημένο μπλοκ που επαναλαμβάνεται. Και όταν κάποιος στείλει ένα αρχείο .md, .json, .csv ή .log που το κινητό αρνείται να ανοίξει, ένας text viewer που τρέχει στον browser το εμφανίζει χωρίς να χρειάζεται εγκατάσταση επεξεργαστή ή προώθηση του αρχείου σε κάποιο site μετατροπής. Όλα τα παραπάνω, συμπεριλαμβανομένης της μέτρησης, τρέχουν εξ ολοκλήρου μέσα στον browser σας: το κείμενο δεν φεύγει ποτέ από τη συσκευή σας, κάτι που έχει μεγαλύτερη σημασία από το συνηθισμένο όταν αυτό που μετράτε είναι ένα προσχέδιο, ένα συμβόλαιο ή ένα log γεμάτο εσωτερικές διαδρομές.

Εργαλεία αυτού του άρθρου

Συχνές ερωτήσεις

Πόσες λέξεις χωράνε σε μία σελίδα;

Οι εκδοτικές συμβάσεις μιλούν για περίπου 500 λέξεις σε μία σελίδα με μονό διάστιχο και περίπου 250 σε μία με διπλό διάστιχο, με την προϋπόθεση τυπικής γραμματοσειράς 12 στιγμών σε χαρτί A4 ή letter. Τα πραγματικά έγγραφα αποκλίνουν από αυτά τα νούμερα με κάθε αλλαγή γραμματοσειράς, περιθωρίου ή επικεφαλίδας, γι' αυτό οι εργασίες και οι υποβολές ολοένα και περισσότερο ορίζουν αριθμό λέξεων αντί για αριθμό σελίδων. Αν έχετε ήδη το κείμενο, μετρήστε το απευθείας και παραλείψτε την εκτίμηση· οι συμβάσεις σελίδων είναι χρήσιμες μόνο πριν υπάρξει το κείμενο.

Τι σημαίνει πραγματικά το lorem ipsum;

Είναι ανακατεμένα λατινικά, όχι ακαταλαβίστικα. Το τυπικό απόσπασμα είναι κομμένο και ανακατεμένο από το De finibus bonorum et malorum του Κικέρωνα, ένα φιλοσοφικό κείμενο του 45 π.Χ.· το απόσπασμα "dolorem ipsum" σημαίνει "ο πόνος καθαυτός". Το ανακάτεμα είναι ακριβώς το ζητούμενο: το κείμενο μοιάζει με φυσική γλώσσα, με εύλογα μήκη λέξεων και ρυθμό προτάσεων, αλλά αντιστέκεται στην ανάγνωση, οπότε ο θεατής κρίνει τη διάταξη και όχι το περιεχόμενο. Η σύγχρονη διάδοσή του αποδίδεται συνήθως στα φύλλα μεταφοράς Letraset της δεκαετίας του 1960 και στο λογισμικό επιτραπέζιας εκτύπωσης της δεκαετίας του 1980.

Γιατί μια πλατφόρμα μετράει λιγότερους χαρακτήρες απ' ό,τι ο δικός μου μετρητής;

Επειδή οι πλατφόρμες μετρούν με τη δική τους στάθμιση. Το X ξεκινά από 280 αλλά χρεώνει κάθε URL ως 23 χαρακτήρες και τα περισσότερα emoji και χαρακτήρες CJK ως 2 το καθένα. Οι πύλες SMS μεταβάλλουν ολόκληρο το μήνυμα από το αλφάβητο GSM-7 των 160 χαρακτήρων στη λειτουργία UCS-2 των 70 χαρακτήρων μόλις ένας μόνο χαρακτήρας το απαιτήσει. Και κάθε πλατφόρμα ενδέχεται να μετράει μονάδες κώδικα αντί για γραφήματα, οπότε ένα και μόνο emoji οικογένειας μπορεί να καταναλώσει 8 από το όριο. Όταν ο αριθμός στο κουμπί διαφωνεί με τον δικό σας μετρητή, οι κανόνες της πλατφόρμας υπερισχύουν· γράψτε με περιθώριο ή ελέγξτε με τον δικό της μετρητή πριν στείλετε.

Πηγές