diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf')
-rw-r--r-- | Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf | 94 |
1 files changed, 66 insertions, 28 deletions
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf index 57ec25f48e5..43040b0c70b 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-french.ldf}[polyglossia: module for french] \PolyglossiaSetup{french}{% + bcp47=fr-FR, language=French, script=Latin, langtag=FRA, @@ -10,46 +11,63 @@ hyphenmins={2,2}, fontsetup=true} +% BCP-47 compliant aliases +\setlanguagealias*{french}{fr} +\setlanguagealias*[variant=french]{french}{fr-FR} +\setlanguagealias*[variant=canadian]{french}{fr-CA} +\setlanguagealias*[variant=swiss]{french}{fr-CH} + % Babel aliases \setlanguagealias[variant=acadian]{french}{acadien} \setlanguagealias[variant=canadian]{french}{canadien} \def\french@variant{french} -\define@choicekey*+{french}{variant}[\val\nr]{french,canadian,acadian}[french]{% +\define@choicekey*+{french}{variant}[\val\nr]{french,canadian,acadian,swiss}[french]{% \ifcase\nr\relax % french: \def\french@variant{french}% + \SetLanguageKeys{french}{babelname=french,bcp47=fr-FR}% + \french@thincolonspacefalse \or % canadian: \def\french@variant{canadien}% - \SetLanguageKeys{french}{babelname=canadien}% + \SetLanguageKeys{french}{babelname=canadien,bcp47=fr-CA}% \xpg@ifdefined{canadien}{}% {\xpg@warning{No hyphenation patterns were loaded for "French (Canada)"\MessageBreak I will use the standard patterns for French instead}% \adddialect\l@canadien\l@french\relax}% + \french@thincolonspacefalse \or % acadian: \def\french@variant{acadian}% - \SetLanguageKeys{french}{babelname=canadien}% + \SetLanguageKeys{french}{babelname=canadien,bcp47=fr-CA}% \xpg@ifdefined{acadian}{}% {\xpg@warning{No hyphenation patterns were loaded for "French (Canada)"\MessageBreak I will use the standard patterns for French instead}% \adddialect\l@acadian\l@french\relax}% + \french@thincolonspacefalse + \or + % swiss: + \def\french@variant{swissfrench}% + \SetLanguageKeys{french}{babelname=french,bcp47=fr-CH}% + \adddialect\l@swissfrench\l@french\relax% + \french@thincolonspacetrue \fi \xpg@info{Option: French, variant=\val}% }{\xpg@warning{Unknown French variant `#1'}} \def\french@language{% - \polyglossia@setup@language@patterns{\french@variant} + \polyglossia@setup@language@patterns{\french@variant}% }% \ifluatex \directlua{require('polyglossia-french')}% \else - \newXeTeXintercharclass\french@openbrackets % ( ] { - \newXeTeXintercharclass\french@closebrackets % ( ] { - \newXeTeXintercharclass\french@punctthin % ! ? ; et autres + \newXeTeXintercharclass\french@openbrackets % ( [ { + \newXeTeXintercharclass\french@closebrackets % ) ] } + \newXeTeXintercharclass\french@questionexclamation % ! ? et autres + \newXeTeXintercharclass\french@punctthin % ; (et :) \newXeTeXintercharclass\french@punctthick % : \newXeTeXintercharclass\french@punctguillstart % « ‹ \newXeTeXintercharclass\french@punctguillend % » › @@ -62,9 +80,9 @@ \define@boolkey{french}[french@]{frenchfootnote}[true]{% \AfterPreamble{% - \ifdefstring{\xpg@main@language}{french}{% - \iffrench@frenchfootnote - \ifx\@makefntext\undefined\else + \iffrench@frenchfootnote + \ifdefstring{\xpg@main@language}{french}{% + \ifx\@makefntext\undefined\else \long\def\french@makefntext##1{% \parindent1em \noindent\quad% \ifx\@thefnmark\empty\else% @@ -72,10 +90,10 @@ } \let\@makefntext\french@makefntext \fi - \else - \let\@makefntext\xpg@orig@makefntext - \fi - }{\xpg@warning{Option 'frenchfootnote' only supported if French is main language!}}% + }{\xpg@warning{Option 'frenchfootnote' only supported if French is main language!}}% + \else + \let\@makefntext\xpg@orig@makefntext + \fi }% } @@ -147,19 +165,28 @@ \define@boolkey{french}[french@]{frenchitemlabels}[true]{% \AfterPreamble{% - \ifdefstring{\xpg@main@language}{french}{% - \iffrench@frenchitemlabels + \iffrench@frenchitemlabels + \ifdefstring{\xpg@main@language}{french}{% \renewcommand{\labelitemi}{\french@itemi}% \renewcommand{\labelitemii}{\french@itemii}% \renewcommand{\labelitemiii}{\french@itemiii}% \renewcommand{\labelitemiv}{\french@itemiv}% - \else - \let\@makefntext\xpg@orig@makefntext - \fi - }{\xpg@warning{Option 'frenchitemlabels' only supported if French is main language!}}% + }{\xpg@warning{Option 'frenchitemlabels' only supported if French is main language!}}% + \else + \let\@makefntext\xpg@orig@makefntext + \fi }% } +% Register default options +\xpg@initialize@gloss@options{french}{variant=french,autospacing=true,thincolonspace=false, + autospaceguillemets=true,autospacetypewriter=false, + frenchfootnote=false,frenchitemlabels=false, + itemlabels=\textemdash,itemlabeli=\textemdash,itemlabelii=\textemdash, + itemlabeliii=\textemdash,itemlabeliv=\textemdash} +% Register alias options +\xpg@set@alias@values{french}{variant}{canadian}{acadian} + \def\french@fontsetup{% \unless\iffrench@autospacetypewriter @@ -192,12 +219,13 @@ \fi \else \XeTeXinterchartokenstate=1 - \XeTeXcharclass `\! \french@punctthin - \XeTeXcharclass `\? \french@punctthin - \XeTeXcharclass `\‼ \french@punctthin - \XeTeXcharclass `\⁇ \french@punctthin - \XeTeXcharclass `\⁈ \french@punctthin - \XeTeXcharclass `\⁉ \french@punctthin + \XeTeXcharclass `\! \french@questionexclamation + \XeTeXcharclass `\? \french@questionexclamation + \XeTeXcharclass `\‼ \french@questionexclamation + \XeTeXcharclass `\⁇ \french@questionexclamation + \XeTeXcharclass `\⁈ \french@questionexclamation + \XeTeXcharclass `\⁉ \french@questionexclamation + \XeTeXcharclass `\‽ \french@questionexclamation % U+203D (interrobang) \XeTeXcharclass `\; \french@punctthin \iffrench@thincolonspace \XeTeXcharclass `\: \french@punctthin @@ -216,26 +244,35 @@ \XeTeXcharclass `\} \french@closebrackets \XeTeXcharclass `\⟨ \french@openbrackets \XeTeXcharclass `\⟩ \french@closebrackets + \XeTeXinterchartoks \z@ \french@questionexclamation = {\xpg@french@thinsp}% \XeTeXinterchartoks \z@ \french@punctthin = {\xpg@french@thinsp}% \XeTeXinterchartoks \z@ \french@punctthick = {\nobreakspace}% + \XeTeXinterchartoks \xpg@boundaryclass \french@questionexclamation = {\xpg@unskip\xpg@french@thinsp}% \XeTeXinterchartoks \xpg@boundaryclass \french@punctthin = {\xpg@unskip\xpg@french@thinsp}% \XeTeXinterchartoks \xpg@boundaryclass \french@punctthick = {\xpg@unskip\nobreakspace}% \iffrench@autospaceguillemets \let\xpg@french@guillspace\xpg@french@thinsp% \XeTeXinterchartoks \french@punctguillstart \z@ = {\xpg@french@guillspace}% "«a" -> "«\,a" + \XeTeXinterchartoks \french@punctguillstart \french@punctguillstart = {\xpg@french@guillspace}% "«‹" -> "«\,‹" % \XeTeXinterchartoks \z@ \french@punctguillstart = {\nobreakspace}% "a«" unchanged? % \XeTeXinterchartoks \french@punctguillend \z@ = {\nobreakspace}% "»a" unchanged? \XeTeXinterchartoks \z@ \french@punctguillend = {\xpg@french@guillspace}% "a»" -> "a\,»" \XeTeXinterchartoks \french@punctguillstart \xpg@boundaryclass = {\xpg@french@guillspace\ignorespaces}% "« " -> "«\," \XeTeXinterchartoks \xpg@boundaryclass \french@punctguillend = {\xpg@unskip\xpg@french@guillspace}% " »" -> "\,»" \XeTeXinterchartoks \french@closebrackets \french@punctguillend = {\xpg@french@guillspace}% ")»" -> ")\,»" + \XeTeXinterchartoks \french@questionexclamation \french@punctguillend = {\xpg@french@guillspace}% "?»" -> "?\,»" + \XeTeXinterchartoks \french@punctthin \french@punctguillend = {\xpg@french@guillspace}% ";»" -> ";\,»" + \XeTeXinterchartoks \french@punctguillend \french@punctguillend = {\xpg@french@guillspace}% "›»" -> "›\,»" \else \def\xpg@french@guillspace{}% \fi + \XeTeXinterchartoks \french@punctguillend \french@questionexclamation = {\xpg@french@thinsp}% "»?" -> "»\,?" \XeTeXinterchartoks \french@punctguillend \french@punctthin = {\xpg@french@thinsp}% "»;" -> "»\,;" \XeTeXinterchartoks \french@punctguillend \french@punctthick = {\nobreakspace}% "»:" -> "» :" - \XeTeXinterchartoks \french@punctthin \french@punctguillend = {\xpg@french@thinsp}% "?»" -> "?\,»" - \XeTeXinterchartoks \french@openbrackets \french@punctthin = {\xpg@unskip}% "(?" -> "(?" and not "( ?" + \XeTeXinterchartoks \french@questionexclamation \french@punctthin = {\xpg@french@thinsp}% "?;" -> "?\,;" + \XeTeXinterchartoks \french@questionexclamation \french@punctthick = {\xpg@french@thinsp}% "?:" -> "?\,:" + \XeTeXinterchartoks \french@openbrackets \french@questionexclamation = {\xpg@unskip}% "(?" -> "(?" and not "( ?" + \XeTeXinterchartoks \french@openbrackets \french@punctthin = {\xpg@unskip}% "(;" -> "(;" and not "( ;" \XeTeXinterchartoks \french@punctthin \french@closebrackets = {\xpg@unskip}% "?)" -> "?)" (code not need, just for symetry with previous one) \XeTeXinterchartoks \french@closebrackets \french@punctthin = {\xpg@french@thinsp}% ")?" -> ")\,?" \XeTeXinterchartoks \french@closebrackets \french@punctthick = {\nobreakspace}% "):" -> ") :" @@ -253,6 +290,7 @@ \XeTeXcharclass `\⁇ \z@ \XeTeXcharclass `\⁈ \z@ \XeTeXcharclass `\⁉ \z@ + \XeTeXcharclass `\‽ \z@ \XeTeXcharclass `\; \z@ \XeTeXcharclass `\: \z@ \XeTeXcharclass `\« \z@ |