Catalog · How the catalog works
HDEditorLigate
Plugin para o IDE Delphi que adiciona suporte a ligaduras tipográficas no editor de código-fonte.
- ★ 2 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
HDEditorLigate
Plugin para o IDE Delphi que adiciona suporte a ligaduras tipográficas no editor de código-fonte.
Flechas (->, =>, -->, ==>), comparações (<>, ===) e outros operadores são renderizados com ligaduras nativas da fonte, sem alterar o comportamento do editor.
Funcionalidades
- Ligaduras tipográficas — Operadores como
->,=>,-->,===,<>são fundidos visualmente - Correção UTF-8 — Corrige automaticamente caracteres acentuados corrompidos pelo bug do IDE (ex:
çviraç) - Toggle pelo menu de contexto — Ative/desative as ligaduras diretamente pelo menu de contexto do editor (clique direito)
- Cache de performance — Resultados de ligaduras são cacheados para tokens repetidos, eliminando recálculos
- Espaçamento proporcional — Texto mantém alinhamento correto entre fragmentos do editor
- Compatível com múltiplas fontes — Funciona com JetBrains Mono, Fira Code, Cascadia Code, Iosevka, e outras com suporte a ligaduras
Como Funciona
O plugin intercepta o callback OnEditorPaintText do IDE e sobrepõe a pintura padrão do texto:
- Correção UTF-8 — Decodifica bytes UTF-8 que foram interpretados incorretamente como code page 1252
- Cache GCP — Consulta cache de 64 entradas (hash FNV-1a) para tokens já processados
- GCP (GetCharacterPlacement) — Usa
GCP_LIGATE | GCP_GLYPHSHAPEem DC isolado para obter glifos com ligaduras - Renderização — Desenha os glifos com
ExtTextOut+ETO_GLYPH_INDEXe espaçamento proporcional ao retângulo do editor
IDE chama PaintText(texto, rect)
??? FillRect(drawRect) com ajuste de gutter
??? RepairGarbledUTF8(texto)
??? Cache lookup (FNV-1a hash)
??? HIT: copia glyphs do cache
??? MISS: GCP em DC persistente + salva no cache
??? ExtTextOut com ETO_GLYPH_INDEX + ClipRect separado (gutter)Requisitos
- Delphi — Embarcadero Delphi 11+ (testado com Delphi 11 a 13)
- Plataforma — Windows (Win32)
- Fonte com ligaduras — Instale uma fonte que suporte ligaduras (ex: JetBrains Mono)
Instalação
- Abra o projeto
HDEditorLigate.dprojno Delphi - Compile o package (Build)
- Instale o package via
Component > Install Packages - Reinicie o IDE
Ou copie o .bpl compilado para a pasta de plugins do Delphi e instale manualmente.
Uso
Após a instalação, o plugin ativa automaticamente. Para usar ligaduras:
- Configure uma fonte com suporte a ligaduras no editor (
Tools > Options > Editor > Font) - Fontes recomendadas: JetBrains Mono, Fira Code, Cascadia Code, Iosevka, Hasklig, DejaVu Sans Mono
- O editor passará a renderizar operadores com ligaduras imediatamente
- Para alternar ligaduras ON/OFF, clique com o botão direito no editor e selecione Toggle Ligatures (um ✓ indica que está ativo)
- Configure a fonte usando o Font Preview e aplique a fonte direto dessa tela.
Ligaduras ON: 
Ligaduras OFF: 
Font Preview:


Estrutura do Projeto
HDEditorLigate/
????????? src/
??? ????????? HDEditorLigate.Main.pas # Wizard do plugin e callback de pintura
??? ????????? HDEditorLigate.Drawer.pas # Renderiza????o com GCP, cache e DC persistente
??? ????????? HDEditorLigate.FontPreview.pas # Preview de fontes com ligaduras
??? ????????? HDEditorLigate.UTF8.pas # Corre????o de texto UTF-8 garbled
????????? HDEditorLigate.dpk # Package do Delphi
????????? HDEditorLigate.dproj # Projeto do Delphi
????????? README.mdMódulos
| Arquivo | Responsabilidade |
|---|---|
Main.pas |
Wizard do IDE, intercepta OnEditorPaintText, configura cores de sintaxe, itens Toggle Ligatures e Font Preview no menu de contexto |
Drawer.pas |
Função UniversalExtTextOut — cache GCP, DC persistente, renderização de ligaduras, ClipRect separado para gutter |
FontPreview.pas |
Diálogo TfrmFontPreview — lista fontes monoespaçadas, preview com ligaduras, aplica fonte ao editor |
UTF8.pas |
Função RepairGarbledUTF8 — decodifica bytes UTF-8 corrompidos pelo IDE |
Limitações Conhecidas
- Apenas Windows — Plugin usa APIs Win32 (GDI) diretamente
Licença
MIT

