﻿# © 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html#License
#
# File: mk_mk_Latn_BGN.txt
# Generated from CLDR
#

#
########################################################################
# BGN/PCGN 1981 System
#
# Macedonian was official established as a literary language in
# Yugoslavia during World War II and is now the official language
# of Macedonia. Its alphabet is identical to Serbian, except
# that the letters Ђђ and Ћћ are replaced by Ѓѓ and Ќќ, and
# the letter Ѕѕ and the apostrophe are added.
#
# The Macedonian Alphabet as defined by the BGN (Page 69):
#
#   АБВГДЃЕЖЗЅИЈКЛЉМНЊОПРСТЌУФХЦЧЏШ
#   абвгдѓежзѕијклљмнњопрстќуфхцчџш’
#
# Originally prepared by Michael Everson <everson@evertype.com>
########################################################################
#
# MINIMAL FILTER: Macedonian-Latin
#
:: [АБВГДЃЕЖЗЅИЈКЛЉМНЊОПРСТЌУФХЦЧЏШабвгдѓежзѕијклљмнњопрстќуфхцчџш’] ;
:: NFD (NFC) ;
#
#
########################################################################
#
########################################################################
#
# Define All Transformation Variables
#
########################################################################
#
$prime  = ’ ;
$upperConsonants = [БВГДЃЖЗЅЈКЛЉМНЊПРСТЌФХЦЧЏШ] ;
$lowerConsonants = [бвгдѓжзѕјклљмнњпрстќфхцчџш’] ;
$consonants = [$upperConsonants $lowerConsonants] ;
$upperVowels = [АЕИОУ] ;
$lowerVowels = [аеиоу] ;
$vowels = [$upperVowels $lowerVowels] ;
$lower = [$lowerConsonants $lowerVowels] ;
#
#
# Use this $wordBoundary until bug 2034 is fixed in ICU:
# http://bugs.icu-project.org/cgi-bin/icu-bugs/transliterate?id=2034;expression=boundary;user=guest
#
$wordBoundary =  [^[:L:][:M:][:N:]] ;
#
#
########################################################################
#
########################################################################
#
# Start of Alphabetic Transformations
#
########################################################################
#
А → A ; # CYRILLIC CAPITAL LETTER A
а → a ; # CYRILLIC SMALL LETTER A
Б → B ; # CYRILLIC CAPITAL LETTER BE
б → b ; # CYRILLIC SMALL LETTER BE
В → V ; # CYRILLIC CAPITAL LETTER VE
в → v ; # CYRILLIC SMALL LETTER VE
Г → G ; # CYRILLIC CAPITAL LETTER GHE
г → g ; # CYRILLIC SMALL LETTER GHE
Д → D ; # CYRILLIC CAPITAL LETTER DE
д → d ; # CYRILLIC SMALL LETTER DE
#
#
########################################################################
#
# BGN Page 70 Rule 1:
#
# The character ѓ should be romanized g when it occurs before е
# and и. In all other instances, it should be romanized đ (Đ).
#
########################################################################
#
Ѓ}[ЕеИи] → G ; # CYRILLIC CAPITAL LETTER GJE
ѓ}[ЕеИи] → g ; # CYRILLIC SMALL LETTER GJE
Ѓ → Đ ; # CYRILLIC CAPITAL LETTER GJE
ѓ → đ ; # CYRILLIC SMALL LETTER GJE
#
#
########################################################################
#
# End Rule 1
#
########################################################################
#
Е → E ; # CYRILLIC CAPITAL LETTER DE
е → e ; # CYRILLIC SMALL LETTER DE
Ж → Ž ; # CYRILLIC CAPITAL LETTER ZHE
ж → ž ; # CYRILLIC SMALL LETTER ZHE
З → Z ; # CYRILLIC CAPITAL LETTER ZE
з → z ; # CYRILLIC SMALL LETTER ZE
Ѕ} $lower → Dz ; # CYRILLIC CAPITAL LETTER DZE
Ѕ → DZ ; # CYRILLIC CAPITAL LETTER DZE
ѕ → dz ; # CYRILLIC SMALL LETTER DZE
И → I ; # CYRILLIC CAPITAL LETTER I
и → i ; # CYRILLIC SMALL LETTER I
Ј → J ; # CYRILLIC CAPITAL LETTER JE
ј → j ; # CYRILLIC SMALL LETTER JE
К → K ; # CYRILLIC CAPITAL LETTER KA
к → k ; # CYRILLIC SMALL LETTER KA
Л → L ; # CYRILLIC CAPITAL LETTER EL
л → l ; # CYRILLIC SMALL LETTER EL
Љ} $lower → Lj ; # CYRILLIC CAPITAL LETTER LJE
Љ → LJ ; # CYRILLIC CAPITAL LETTER LJE
љ → lj ; # CYRILLIC SMALL LETTER LJE
М → M ; # CYRILLIC CAPITAL LETTER EM
м → m ; # CYRILLIC SMALL LETTER EM
Н → N ; # CYRILLIC CAPITAL LETTER EN
н → n ; # CYRILLIC SMALL LETTER EN
Њ} $lower → Nj ; # CYRILLIC CAPITAL LETTER NJE
Њ → NJ ; # CYRILLIC CAPITAL LETTER NJE
њ → nj ; # CYRILLIC SMALL LETTER NJE
О → O ; # CYRILLIC CAPITAL LETTER O
о → o ; # CYRILLIC SMALL LETTER O
П → P ; # CYRILLIC CAPITAL LETTER PE
п → p ; # CYRILLIC SMALL LETTER PE
Р → R ; # CYRILLIC CAPITAL LETTER ER
р → r ; # CYRILLIC SMALL LETTER ER
С → S ; # CYRILLIC CAPITAL LETTER ES
с → s ; # CYRILLIC SMALL LETTER ES
Т → T ; # CYRILLIC CAPITAL LETTER TE
т → t ; # CYRILLIC SMALL LETTER TE
#
#
########################################################################
#
# BGN Page 70 Rule 2:
#
# The character ќ should be romanized k when it occurs before е
# and и. In all other instances, it should be romanized c\u0301.
#
########################################################################
#
Ќ}[ЕеИи] → K ; # CYRILLIC CAPITAL LETTER KJE
ќ}[ЕеИи] → k ; # CYRILLIC SMALL LETTER KJE
Ќ → C\u0301 ; # CYRILLIC CAPITAL LETTER KJE
ќ → c\u0301 ; # CYRILLIC SMALL LETTER KJE
#
#
########################################################################
#
# End Rule 2
#
########################################################################
#
У → U ; # CYRILLIC CAPITAL LETTER U
у → u ; # CYRILLIC SMALL LETTER U
Ф → F ; # CYRILLIC CAPITAL LETTER EF
ф → f ; # CYRILLIC SMALL LETTER EF
Х → H ; # CYRILLIC CAPITAL LETTER HA
х → h ; # CYRILLIC SMALL LETTER HA
Ц → C ; # CYRILLIC CAPITAL LETTER TSE
ц → c ; # CYRILLIC SMALL LETTER TSE
Ч → Č ; # CYRILLIC CAPITAL LETTER CHE
ч → č ; # CYRILLIC SMALL LETTER CHE
Џ} $lower → Dž ; # CYRILLIC CAPITAL LETTER SHA
Џ → DŽ ; # CYRILLIC CAPITAL LETTER SHA
џ → dž ; # CYRILLIC SMALL LETTER SHA
Ш → Š ; # CYRILLIC CAPITAL LETTER SHA
ш → š ; # CYRILLIC SMALL LETTER SHA
#
#
########################################################################
#
# BGN Page 69 Rule 32, maps the symbol onto itself and
# is ignored here for computational efficiency.
#
# $prime → $prime ; # RIGHT SINGLE QUOTATION MARK
#
########################################################################

