Ar ol ychydig bach mwy o ymchwil rwy'n deall taw'r llythrennau Cymraeg yn nhrefn goladu ddiofyn Unicode ( DUCET ) sydd ar y tudalen.
Mae'r rheolau
ychwanegol sydd eu angen i gael trefn goladu gywir ar gyfer y Gymraeg i'w gweld yma
http://unicode.org/repos/cldr/trunk/common/collation/cy.xml . Yn fras mae'n pennu beth mae rhaid gwneud gyda'r llythrennau dwbl.
Yr unig gwahaniaeth i'r rhestr wreiddiol yw lleoliad 'ng'.
Mae modd chwarae gyda'r drefn goladu yma
http://demo.icu-project.org/icu-bin/locexp?_=cy&d_=en&x=col - er mwyn cael y dref gywir ar gyfer y Gymraeg mae rhaid ychwanegu'r rheolau isod:
- Cod: Dewis popeth
&c<ch<Ch<CH
&d<dd<Dd<DD
&f<ff<Ff<FF
&g<ng<Ng<NG
&l<ll<Ll<LL
&p<ph<Ph<PH
&r<rh<Rh<RH
&t<th<Th<TH
Yn ddelfrydol ni fyddai datblygwyr unigol yn gorfod ysgrifennu meddalwedd i drefnu geiriau - dim ond defnyddio modiwlau safonol i wneud y gwaith.
Mae un i gael ar gyfer Perl o'r enw Unicode::Collate sy'n trefnu geiriau yn ol DUCET ( mae'n cynnwys y ffeil
http://unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt ) ond sy'n caniatau nodi lleoleiddiad.
Er enghraifft dyma rhaglen Perl sy'n defnyddio'r modiwl uchod - y rheolau ychwanegol ar gyfer y Gymraeg yw'r bloc 'ENTRY' ( dylai fod mewn ffeil ar wahan )
- Cod: Dewis popeth
use Unicode::Collate;
use strict;
use warnings;
my $entry = <<'ENTRY'; # DUCET v4.0.0 (allkeys-4.0.0.txt)
0063 0068 ; [.1007.0020.0002.0063] # ch
0043 0068 ; [.1007.0020.0007.0043] # Ch
0043 0048 ; [.1007.0020.0008.0043] # CH
0064 0064 ; [.101C.0020.0002.0064] # dd
0044 0064 ; [.101C.0020.0007.0044] # Dd
0044 0044 ; [.101C.0020.0008.0044] # DD
0066 0066 ; [.1064.0020.0002.0066] # ff
0046 0066 ; [.1064.0020.0007.0046] # Ff
0046 0046 ; [.1064.0020.0008.0046] # FF
006E 0067 ; [.107B.0020.0002.006E] # ng
004E 0067 ; [.107B.0020.0002.006E] # Ng
004E 0047 ; [.107B.0020.0002.006E] # NG
006C 006C ; [.10FA.0020.0002.006C] # ll
004C 006C ; [.10FA.0020.0007.004C] # Ll
004C 004C ; [.10FA.0020.0008.004C] # LL
0070 0068 ; [.1165.0020.0002.0070] # ph
0050 0068 ; [.1165.0020.0007.0050] # Ph
0050 0048 ; [.1165.0020.0008.0050] # PH
0072 0068 ; [.1196.0020.0002.0072] # rh
0052 0068 ; [.1196.0020.0007.0052] # Rh
0052 0048 ; [.1196.0020.0008.0052] # RH
0074 0068 ; [.11DE.0020.0002.0074] # th
0054 0068 ; [.11DE.0020.0007.0054] # Th
0054 0048 ; [.11DE.0020.0008.0054] # TH
ENTRY
my $mewnbwn = <<'MEWNBWN';
ch d dd â e é è á rh rhydu rhydd s tôn tŷ tynn à
ê a ë f ff g sêl ng i í tân ì î ï tôn l lori ll m ä arch
agor b c car o cachu n ó defnydd angau cacynen ò ô ö p ph
ú r th u ù û ü w y ý ÿ tŵr
MEWNBWN
my @anhrefnedig = split(' ',$mewnbwn);
my $coladu = Unicode::Collate->new( entry=>$entry );
my @trefnedig = $coladu->sort(@anhrefnedig);
if ( open ( my $fh, '>', 'allbwn.txt' ) ) {
print $fh join(qq(\n),@trefnedig);
close( $fh );
}
A dyma'r allbwn
- Cod: Dewis popeth
a
á
à
â
ä
agor
angau
arch
b
c
cacynen
cachu
car
ch
d
defnydd
dd
e
é
è
ê
ë
f
ff
g
ng
i
í
ì
î
ï
l
lori
ll
m
n
o
ó
ò
ô
ö
p
ph
r
rh
rhydu
rhydd
s
sêl
tân
ton
tôn
twr
twrist
ty
tynn
th
u
ú
ù
û
ü
w
y
ý
ÿ
Copio a gludo ar Windows sy'n gyfrifol am golli to bach yr 'w' a'r 'y'