2013-12-30, 23:43 (+0100); Joan Montané escriu: > El dia 30 desembre de 2013 22.49, Ernest Adrogué <nfdi...@gmail.com> ha > escrit: > > > No tinc coneixments de C++. Fa temps em vaig mirar l'algoritme de divisió > > de paraules de GTK però al final ho vaig deixar estar. Em sembla que era > > Pango, qui ho feia. > > > > Correcte, així és. Teòricament pango-break segueix UAX TR29 [2], però no > puc verificar-ho sense usar Cairo. Caldria fer un petit programa "pango > only" que marquès els talls de paraula en una frase de prova, per a > verificar que pango va bé. En cas afirmatiu, anar a buscar el problema a > Cairo. En cas negatiu, veure on falla pango, perquè el codi [2] sembla > correcte (l'he resseguit unes quantes vegades).
Jo vaig fer un programa d'aquest estil amb Python per fer proves. Miraré a veure si el trobo. > El primer pas seria arreglar el local ca_ES, perquè dóna la categoria del > > caràcter incorrecta. Segons he llegit a [1] hauríem de contactar amb el > > mantenidor del local ca_ES de la libc de GNU (Jordi Mallach, em sona que el > > tenim en aquesta llista). > > > > Sí, el tenim per aquí, i si no el puc localitzar per altres bandes, :) > Ara... la solució bona és que readline usi UAX TR29 per a detectar > paraules. L'algorisme lletres i números és massa simple per a detectar > paraules. En cas que els desenvolupadors de readline no vulguin, doncs el > pla B que indiques seria una bona aproximació i funcionaria, sempre que > tinguem el locale català actiu. > > Caldria fer proves, per exemple que passa si intentem passar a minúscula o > a majúscula el caràcter. > > Com has canviat la definició del locale? Explica-m'ho senzill, sisplau, :) Les difinicions són a /usr/share/i18n i s'han de compilar amb un programa que es diu localedef. El format de les definicions, a la plana del manual de locale(5) explica una mica com és. Adjunto el locale modificat, que es diu ca_ZZ. L'única diferència amb el ca_ES és que el caràcter de punt volat U00B7 passa de la secció «punct» a la secció «alpha» a LC_CTYPE. Nota: a l'hora de fer canvis, els caràcters han d'estar ordenats, si els poses a qualsevol lloc dóna error de sintaxi. Passos per provar el locale: 1. Descomprimir el fitxer tar.gz. 2. Anar al directori i18/locale i executar: source install-locale 2> errors source set-locale-subshell La primera línia compila el locale ca_ZZ que hi ha al subdirectori locale-data i l'instal·la al directori locale-test. La segona línia executa bash amb el local configurat com a ca_ZZ. Per sortir i tornar al local ca_ES o el que tinguis configurat per al teu usuari, es fa amb «exit». > Abans que ningú no faci la proposta, ja es va intentar posar el punt volat > (U+00B7) com a caràcter alfabètic a Unicode (valor predeterminat per a > totes les llengües). Es va denegar. Les possibilitats de posar-ho allà són > nul·les. De fet, estrictament parlant, el punt volat no és un caràcter > alfabètic. És un signe de puntuació intern de paraula, per tant ja està ben > classificat. Una altra cosa és que els algorismes ens perjudiquin i la > drecera més fàcil sigui classificar-lo com alfabètic. Els locals que utilitza Debian són els de Unicode [1], són els mateixos que fa servir Google o Apple. Però a Debian no crec que hi hagi problema per canviar-lo, o sempre es pot fer un local ca_ES alternatiu com el ca_ES@Euro o ca_ES@valencia. Tècnicament és un caràcter de puntuació, però diria que no s'utilitza enlloc, excepte a la ela geminada. El punt de multiplicació diria que és una altre caràcter. Salut.
locale-ca-es.tar.gz
Description: Binary data