> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/overleaf-learn-latex-pt/idiomas/01-multilingual-typesetting-on-overleaf-using-polyglossia-and-fontspec.md).

# Composição tipográfica multilingue no Overleaf usando polyglossia e fontspec

## Introdução

Este artigo apresenta uma visão geral da composição tipográfica de documentos multilíngues no Overleaf usando o compilador XeLaTeX (ou LuaLaTeX) em conjunto com os `fontspec` e `polyglossia` pacotes LaTeX.

Para muitos, senão para a maioria dos usuários, a escolha padrão do motor TeX é `pdfTeX`, que, ao contrário do XeTeX e do LuaTeX, não possui capacidade nativa de ler [UTF-8](https://en.wikipedia.org/wiki/UTF-8) arquivos de texto codificados. Usar o pdfTeX torna a composição tipográfica de certos idiomas em LaTeX muito complicada, especialmente aqueles que não usam um alfabeto baseado no latim. Alguns pacotes — como [`inputenc`, `fontenc` e](/latex/overleaf-learn-latex-pt/idiomas/05-arabic.md) [`arabtex`](/latex/overleaf-learn-latex-pt/idiomas/05-arabic.md)— fornecem suporte ao pdfTeX para compor tipograficamente idiomas e alfabetos não latinos, mas nem todos os glifos e caracteres podem ser compatíveis ou renderizados corretamente no PDF de saída, mesmo que você tenha usado a `utf8` ou `utf8x` opção com `inputenc`.

Para uma discussão aprofundada sobre UTF-8, codificação Unicode e os motores XeTeX/LuaTeX, o artigo do Overleaf [Unicode, UTF-8 e texto multilíngue: uma introdução](/latex/overleaf-learn-latex-pt/artigos-aprofundados/51-unicode-utf-8-and-multilingual-text-an-introduction.md) é uma leitura fascinante.

## Apresentamos XeTeX e LuaTeX

Os motores XeTeX e LuaTeX podem ler/processar diretamente texto codificado em UTF-8; consequentemente, oferecem suporte nativo ao Unicode — eles também podem [trabalhar diretamente com fontes TrueType e OpenType](/latex/overleaf-learn-latex-pt/fontes/03-xelatex.md) diretamente. Essas propriedades os tornam uma escolha natural para a composição tipográfica de documentos multilíngues ou não latinos em LaTeX, produzindo saídas como estas:

![](/files/8b8af3d253cdcd03c82a7c0b7b3d537442c93c09) ![](/files/d606ee583c2b471799f8886389bcdfdb1f6c9b0e) ![](/files/88b84c436385c7412d22a857b93c42e4bc331f5a)

Esses exemplos podem ser encontrados na Galeria do Overleaf: [Como Escrever Texto Multilíngue com Diferentes Escritas no LaTeX no Overleaf](https://www.overleaf.com/latex/examples/how-to-write-multilingual-text-with-different-scripts-in-latex/wfdxqhcyyjxz) e ["Obrigado" multilíngue](https://www.overleaf.com/latex/templates/multilingual-thank-you/wjmrnnqkstyf).

Se você deseja compor tipograficamente chinês, japonês e coreano, dê uma olhada nestes artigos:

* [Chinês](/latex/overleaf-learn-latex-pt/idiomas/06-chinese.md)
* [Japonês](/latex/overleaf-learn-latex-pt/idiomas/11-japanese.md)
* [Coreano](/latex/overleaf-learn-latex-pt/idiomas/12-korean.md)

Xe(La)TeX ainda é útil para esses idiomas, mas há motores TeX mais especializados disponíveis, especificamente [projetados para a composição tipográfica de idiomas CJK](/latex/overleaf-learn-latex-pt/mais-topicos/45-tex-primitives-listed-by-cjk-tex-engine.md)— como [pTeX](https://ctan.org/pkg/ptex?lang=en) para compor tipograficamente japonês.

Observe que, se o seu cursor parecer estar se comportando de forma estranha ao editar texto em certos idiomas no Overleaf, talvez você queira clicar no Overleaf **Menu** botão (situado acima da lista de arquivos do projeto) e alterar a opção “Font Family”. Você também pode tentar [alterar as preferências de fonte monoespaçada do seu navegador](https://www.howtogeek.com/208552/how-to-change-the-default-fonts-in-your-web-browser/) ou usar a visualização Rich Text do Overleaf. No entanto, no momento em que este texto foi escrito, as visualizações Source e Rich Text talvez ainda não ofereçam suporte completo à edição de texto da direita para a esquerda no nível de funcionalidade que pretendemos alcançar.

## Alterando o compilador do projeto

O `fontspec` e `polyglossia` os pacotes exigem o compilador XeLaTeX ou LuaLaTeX, então você precisará configurar seu projeto no Overleaf para usar um desses compiladores. Instruções detalhadas podem ser encontradas em nosso artigo [Escolher um Compilador LaTeX](/latex/overleaf-learn-latex-pt/mais-topicos/08-choosing-a-latex-compiler.md) mas aqui está um breve vídeo mostrando como definir o compilador para o seu projeto:

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/2HDpWlJuNR50hknbpxfQdu/93cdc17ef2c6c77249a1c7c76b34a817/choosingcompiler.mp4>" %}

Depois que você estiver compilando com XeLaTeX ou LuaLaTeX, você pode (e deve) remover os `inputenc` e `fontenc` pacotes do preâmbulo do seu arquivo .tex, porque esses motores com suporte a Unicode presumirão que os arquivos de entrada (texto) estejam codificados em UTF-8. Aliás, todos os arquivos de texto enviados ao Overleaf são convertidos para UTF-8, então você normalmente deve usar `utf8` com `inputenc` ao trabalhar com os compiladores pdfLaTeX e LaTeX no Overleaf.

## Se o seu documento inteiro envolver apenas um idioma

Ao usar o `fontspec` pacote, você pode conseguir se virar definindo apenas uma fonte principal (serifada), uma fonte sem serifa e provavelmente uma fonte monoespaçada projetada para dar suporte ao idioma que você está compondo tipograficamente — há um porém, mas voltaremos a isso mais adiante no artigo. Por exemplo, se todo o seu documento estiver em grego, com algumas palavras em inglês, você pode simplesmente escrever

```latex
\usepackage{fontspec}
\setmainfont[Script=Greek]{GFS Artemisia}
\setsansfont[Script=Greek]{GFS Neohellenic}
\setmonofont[Script=Greek]{Noto Mono}
. . .
Το Lorem Ipsum είναι \textsf{απλά} ένα κείμενο χωρίς νόημα
για τους επαγγελματίες της \texttt{τυπογραφίας} και στοιχειοθεσίας.
```

Você pode escolher fontes em uma [lista de fontes TrueType e OpenType disponíveis](https://www.overleaf.com/help/193). O `Ligatures=TeX` opção é adicionada automaticamente para `\setmainfont` e `\setsansfont`, então você não precisa adicioná-la manualmente. (`\setromanfont` é um alias de `\setmainfont`.)

O código LaTeX acima produz a seguinte saída:

![](/files/2744692a0df9c18544b3c49c190bd31123359c28)

## Múltiplos idiomas/escritas no mesmo documento: apresentando o polyglossia

Se o seu documento contém quantidades significativas de texto em vários idiomas, o `polyglossia` pacote polyglossia é útil para ajudar a cuidar das convenções de composição tipográfica específicas de cada idioma e da hifenização.

```latex
\usepackage{fontspec}
\setmainfont{FreeSerif}
\setsansfont{FreeSans}
\setmonofont{FreeMono}

\usepackage{polyglossia}
\setdefaultlanguage{french}
\setotherlanguages{english,russian,thai}

\begin{document}
\begin{abstract}
Le Lorem Ipsum est simplement du faux texte employé dans
la composition et la mise en page avant impression.
\end{abstract}

Merci. \textenglish{Thank you.} \textrussian{Спасибо.} E mais
texto em francês!

Le Lorem Ipsum est le faux texte standard ...

\begin{english}
Lorem Ipsum is simply dummy text ...
\end{english}

\begin{russian}
Lorem Ipsum - это текст-`\textsf{рыба}', часто используемый в
\texttt{печати} и вэb-дизайне. ...
\end{russian}

\begin{thai}
\XeTeXlinebreaklocale "th_TH"
\textenglish{Lorem Ipsum} คือ เนื้อหาจำลองแบบเรียบๆ ที่ใช้กันในธุรกิจงานพิมพ์หรืองานเรียงพิมพ์
\end{thai}
```

![](/files/6b3778b00fbad63edd9e24f85c88008ef6c4ad45)

`polyglossia` permite definir o idioma principal do documento com `\setdefaultlanguage` (o padrão é inglês) e os idiomas “outros” (possivelmente múltiplos) com `\setotherlanguages`. (`\setmainlanguage` é um alias de `\setdefaultlanguage`.) Se você espera usar apenas um outro idioma estrangeiro, pode usar o singular `\setotherlanguage`. Os nomes dos idiomas são os mesmos usados por `babel`.

Preparamos um pequeno exemplo de um documento (principalmente) em francês que também contém algum texto em inglês, russo e tailandês. Decidimos usar as fontes FreeSerif, FreeSans e FreeMono.

Como o idioma principal do documento é `french`, a `abstract` environment produz automaticamente o título ‘Résumé’. Observe como, no fim do primeiro parágrafo, o ponto de exclamação é composto usando a convenção tipográfica de espaçamento do francês: ele fica separado de ‘français’, embora venha imediatamente após a palavra `français` no código-fonte.

No texto principal, pequenos trechos em inglês, cirílico e tailandês podem ser incluídos em um parágrafo de texto em francês com `\textenglish{Thank you}`, `\textrussian{Спасибо}` e `\textthai{ขอบคุณ}`. Em geral, você pode usar `\textLANGUAGE{...}` para compor tipograficamente texto em qualquer `LANGUAGE` que tenha sido declarado por `\setdefaultlanguage` e `\setotherlanguages`. Como a fonte principal (serifada) do documento é FreeSerif, e a FreeSerif contém glifos para os alfabetos latino, cirílico e tailandês (e mais!), `fontspec` e `polyglossia` pode usá-la para renderizar todos esses textos no PDF de saída.

Para parágrafos mais longos de texto em idiomas estrangeiros/ou outros, recomenda-se usar `\begin{LANGUAGE}`...`\end{LANGUAGE}`, por exemplo, `\begin{russian}`...`\end{russian}`, `\begin{thai}`...`\end{thai}`. No caso do árabe, você não pode usar `\begin{arabic}`...`\end{arabic}`; você terá que escrever `\begin{Arabic}`...`\end{Arabic}` em vez disso, enquanto `\textarabic{...}` ainda é válido.

Algumas considerações podem ser necessárias para certos idiomas: por exemplo, dentro do `thai` ambiente, as palavras `Lorem Ipsum` precisam ser envoltas em um `\textenglish{...}` (ou `\textfrench{...}` comando para garantir que sejam renderizadas usando os glifos da escrita latina.)

Neste ponto, você pode perguntar: se a FreeSerif é tão versátil e já contém glifos para russo e tailandês, por que ainda precisaríamos usar `\textrussian`, `\begin{english}`...`\end{english}` etc.? Isso não seria redundante? Vamos ver o que acontece quando removemos os `\begin{english}`...`\end{english}` e `\begin{russian}`...`\end{russian}` ambientes:

![](/files/b071aeb53bdb8cf983de391ecaba4f2e7863c11d)

Certamente, os glifos latinos e cirílicos são todos renderizados no PDF de saída, mas observe que algumas palavras agora estão hifenizadas incorretamente: ‘unk-nown’ e ‘unchan-ged’ — e стандартной nem sequer é hifenizada. Sem os ambientes de troca de idioma, o compilador pensa que esses itens de texto ainda estão em francês e tenta compô-los usando as convenções francesas. O compilador tenta aplicar as regras de hifenização do francês, que, naturalmente, produzem resultados incorretos. É por isso que tipografia e composição tipográfica são muito mais do que apenas design e seleção de fontes: são disciplinas muito específicas de cada idioma e cultura.

Ao revisitar nosso primeiro exemplo em grego, agora vemos por que é uma boa ideia carregar `polyglossia` e usar `\setdefaultlanguage{greek}`: para garantir que o documento seja composto tipograficamente seguindo as convenções gregas.

## Misturando idiomas da direita para a esquerda (RTL) e da esquerda para a direita (LTR)

Você precisa ter cuidado ao compor uma mistura de alfabetos da direita para a esquerda (RTL), como árabe ou hebraico, e alfabetos da esquerda para a direita (LTR) no mesmo documento. Considere o seguinte pequeno documento em árabe com uma palavra em inglês, usando Amiri como fonte principal:

```latex
\usepackage{polyglossia}
\setdefaultlanguage{arabic}
\setmainfont{Amiri}
\begin{document}
ما هو differentiation
\end{document}
```

o que produz:

![](/files/06ab51f1073aecffe9e0890289fe7d417dc85ace)

O texto é automaticamente composto da direita para a esquerda, começando na margem direita da página. A palavra “differentiation” em si é composta corretamente como texto da esquerda para a direita — mas espere, *não, não está*! Ela é renderizada como “dffirentiation” na saída! O que está acontecendo?

A fonte Amiri realmente tem glifos para alfabetos latinos, mas aqui o texto `differentiation` não está marcado como inglês: o compilador trata `differentiation` como texto da direita para a esquerda, como se fosse uma sequência de caracteres árabes. Durante a composição tipográfica, a sequência original `iff` é processada como `ffi` (isto é, como texto RTL) e o glifo de ligadura da Amiri [ligadura](https://en.wikipedia.org/wiki/Typographic_ligature) para “ffi” é composto. Marcar a palavra com `\textenglish{...}` garante que ela seja interpretada corretamente como texto da esquerda para a direita.

```latex
\setmainfont{Amiri}
\setotherlanguage{english}
\newfontfamily\englishfont{TeX Gyre Termes}
\begin{document}
ما هو \textenglish{differentiation}
```

![](/files/a01d43effe261eb2117bed539637e5f4e19762cc)

**Nota:** Se você está acostumado com os `babel` comandos do pacote, ficará satisfeito em saber que os comandos `\selectlanguage`, `\foreignlanguage` e o ambiente `otherlanguage` também são suportados por `polyglossia`.

## Opções específicas de idioma

Alguns idiomas suportam opções adicionais de personalização; por exemplo, `greek` aceita a `variant=ancient`, `mono` ou `poly` opção para grego antigo, monotônico ou politônico; `hindi` pode ser configurado com `numerals=western` ou `devanagari`. Veja a [documentação do pacote polyglossia](http://texdoc.net/pkg/polyglossia) para mais detalhes.

Essas opções podem ser especificadas ao carregar o idioma:

```latex
\setdefaultlanguage[variant=poly]{greek}
\setotherlanguage[numerals=western]{hindi}
```

ou depois, a qualquer momento:

```latex
\setkeys{greek}{variant=ancient}
```

ou até mesmo localmente para um ambiente específico:

```latex
\begin{greek}[variant=ancient]
...
\end{greek}
```

## Especificando fontes para idiomas específicos

Você pode especificar a fonte usada para diferentes idiomas. Suponha que você gostaria de compor todo o texto em inglês (contido em nosso exemplo anterior) em itálico; você poderia escrever:

```latex
\newfontfamily\englishfont{FreeSerif Italic}
```

![](/files/0f7d4f9b7e6c23d3d2fdb13b540001aa7c1d4ed2)

É claro que você pode usar algo ainda mais extravagante:

```latex
\newfontfamily\englishfont{Chancery Uralic}
```

![](/files/82d83e9255743d9208f22add468280c4c41babcf)

Esse mecanismo de definir fontes para diferentes idiomas ou alfabetos é especialmente importante quando você usa uma fonte principal que *não* tenha glifos para todos os alfabetos ou idiomas do seu documento. Suponha que agora decidamos usar Caladea como fonte principal do documento:

```latex
\setmainfont{Caladea}
```

Na compilação, veríamos o seguinte erro:

```
Erro do pacote polyglossia: a fonte romana atual
não contém o alfabeto cirílico!

(polyglossia)                Defina
\cyrillicfont com \newfontfamily.

Veja a documentação do pacote polyglossia para
explicações.
Digite H <return> para ajuda imediata.
 ...

l.15 \select@language {russian}

Erro do pacote polyglossia: a fonte romana atual
não contém o alfabeto tailandês!

(polyglossia)                Defina
\thaifont com \newfontfamily.

Veja a documentação do pacote polyglossia para
explicações.
Digite H <return> para ajuda imediata.
 ...

l.23 \select@language {thai}
...
```

Agora somos obrigados a especificar quais fontes usar para os alfabetos cirílico e tailandês. Novamente, você pode consultar a [lista de fontes TrueType e OpenType disponíveis](https://www.overleaf.com/help/193) no Overleaf.

```latex
\newfontfamily\cyrillicfont[Script=Cyrillic]{Charis SIL}
\newfontfamily\thaifont[Script=Thai]{Garuda}
```

![](/files/7a5bece17844a40e758cbc4325ba32821ea557de)

**Nota**: está fora do escopo deste artigo abordar questões relacionadas a escolhas de combinações de fontes esteticamente agradáveis e tipograficamente compatíveis.

Observe que definimos `\cyrillicfont` em vez de `\russianfont`, ou seja, definimos uma fonte para o alfabeto cirílico *escrita* em vez do idioma russo *idioma*. A vantagem de definir `\cyrillicfont` é que, se, por exemplo, `serbian` também for um idioma definido no seu projeto, então `\textserbian` usaria automaticamente a fonte definida `\cyrillicfont`. Se você tivesse definido apenas `\russianfont`, então usar `\textserbian` voltaria a reclamar que “a fonte romana atual não contém o alfabeto cirílico” e você precisaria definir `\cyrillicfont` de qualquer forma — *a menos que* vocês *realmente* pretendesse usar uma fonte diferente para o texto sérvio!

Outro cenário semelhante é o Devanagari *escrita*, que é usado para os *idiomas*; ou o alfabeto árabe usado para árabe e farsi (persa).

```latex
\setdefaultlanguage{english}
\setotherlanguages{hindi,sanskrit}
\newfontfamily\devanagarifont[Script=Devanagari]{Lohit Devanagari}
...
Hindi: \texthindi{हिन्दी}
Sânscrito: \textsanskrit{संस्कृतम्}
```

![](/files/1a1f4292e29f675ed1578afb91c843901c8ae50e)

Ao usar `\newfontfamily` é necessário especificar o `Script`, caso contrário, alguns glifos podem ser renderizados incorretamente; por exemplo, se tivéssemos escrito apenas `\newfontfamily\thaifont{Garuda}` o resultado composto pode ficar errado (imagem à esquerda abaixo) — a saída correta é produzida ao adicionar `[Script=Thai]`.

Errado: ![](/files/117f933ad73c42dba3634d691fab284b296999ce) Correto: ![](/files/73b489eab98913de1a114ae5a3abf7b1e887e823)

## Definindo outras famílias de fontes

Vamos dar uma olhada em outro exemplo, desta vez com hebraico:

```latex
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage[numerals=hebrew]{hebrew}
\setotherlanguage{english}
\newfontfamily\hebrewfont[Script=Hebrew]{Hadasim CLM}
\begin{document}
\section{מבוא}
זוהי עובדה מבוססת שדעתו של הקורא תהיה מוסחת עלידי טקטס קריא כאשר הוא יביט בפריסתו.  -
\end{document}
```

![](/files/79664e2a55d3a4de496b9e9997da13fbb66aff3e)

Até aqui, tudo bem. Agora suponha que estivéssemos usando um modelo originalmente criado para um documento em inglês, que define títulos de seção em fonte sem serifa usando o `titlesec` pacote:

```latex
\RequirePackage{titlesec}
\titleformat{\section}{\Large\sffamily\bfseries}{\thesection}{1em}{}
\usepackage{polyglossia}
\setdefaultlanguage[numerals=hebrew]{hebrew}
...
```

Nos deparamos com a mensagem de erro:

```
Erro do pacote polyglossia: a fonte romana atual
não contém o alfabeto hebraico!

(polyglossia)                Defina
\hebrewfont com \newfontfamily.

Veja a documentação do pacote polyglossia para
explicações.
Digite H <return> para ajuda imediata.
 ...

l.27 \section{מבוא}
```

Isso é um pouco confuso: não definimos já `\hebrewfont` como Hadasim CLM? Bem, na verdade é porque nós *não especificamos uma fonte sem serifa para o hebraico*. Vamos corrigir isso adicionando uma definição para `\hebrewfontsf`:

```latex
\newfontfamily\hebrewfontsf[Script=Hebrew]{Miriam CLM}
```

E agora temos a saída:

![](/files/8f481579a2bc9fe106a4a0c9e12ba8ff4ca94e40)

Se necessário, também poderíamos definir uma fonte monoespaçada para usar com `\hebrewfonttt`.

## Agradecimentos

Todos os trechos de lorem ipsum, em vários idiomas, são de [`https://lipsum.com`](https://lipsum.com).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/overleaf-learn-latex-pt/idiomas/01-multilingual-typesetting-on-overleaf-using-polyglossia-and-fontspec.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
