Al transicionar de WPF a Avalonia UI, es fundamental ajustar el flujo de trabajo y la configuración inicial para aprovechar al máximo el framework multiplataforma. A continuación, se detallan los pasos para inicializar un proyecto, integrar fuentes personalizadas para resolver problemas de renderizado y comprender las diferencias entre las plantillas disponibles.
Creación del proyecto mediante la interfaz de línea de comandos
Generar la solución directamente desde el IDE a veces produce estructuras de múltiples proyectos que pueden resultar excesivas para prototipos rápidos. Además, las plantillas integradas en el IDE pueden estar desactualizadas. Utilizar la CLI de .NET garantiza que se empleen las versiones más recientes de las plentillas de Avalonia.
# Instalar o actualizar las plantillas de Avalonia en el entorno local
dotnet new install Avalonia.Templates
# Generar una nueva aplicación básica en un directorio específico
dotnet new avalonia.app -n MiAppAvalonia -o ./src/MiAppAvalonia
Optimización de la tipografía para caracteres CJK
La fuente predeterminada del sistema puede presentar problemas de suavizado o nitidez al renderizar caracteres chinos. Una solución efectiva es integrar la familia tipográfica HarmonyOS Sans, específicamente la variante SC (Simplified Chinese).
Tras descargar y extraer el paquete de fuentes, se deben identificar los archivos TTF adecuados. La carpeta HarmonyOS_Sans_SC contiene los pesos necesarios. Para optimizar el tamaño del binario final, se puede incluir únicamente el peso Regular, o añadir Bold y Light según los requisitos de diseño. Estos archivos deben copiarse a la carpeta Assets del proyecto y su propiedad de compilación debe establecerse como AvaloniaResource.
Para gestionar los diferentes pesos de manera eficiente, se registra la familia tipográfica como un recurso global en el diccionario de la aplicación. La sintaxis de URI de Avalonia (avares://) permite apuntar al directorio que contiene los archivos TTF, seguido del nombre de la familia tipográfica después del símbolo #.
<!-- Archivo: App.axaml -->
<Application xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MiAppAvalonia.App">
<Application.Resources>
<!-- Referencia al directorio que contiene múltiples pesos de la fuente -->
<FontFamily x:Key="FuentePrincipal">avares://MiAppAvalonia/Assets/Fonts#HarmonyOS Sans SC</FontFamily>
<!-- Referencia directa a un archivo único (alternativa si solo se usa un peso) -->
<!-- <FontFamily x:Key="FuenteUnica">avares://MiAppAvalonia/Assets/Fonts/HarmonyOS_Sans_SC_Regular.ttf#HarmonyOS Sans SC</FontFamily> -->
</Application.Resources>
</Application>
Una vez definido el recurso, se puede aplicar a cualquier control o contenedor visual. Al modificar la propiedad FontWeight, el motor de renderizado seleccionará automáticamente el archivo TTF correspondiente dentro del directorio especificado.
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MiAppAvalonia.Views.MainWindow"
Title="Ventana Principal"
FontFamily="{StaticResource FuentePrincipal}"
FontWeight="SemiBold">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="Interfaz multiplataforma con tipografía optimizada: 跨平台界面" FontSize="24" />
</StackPanel>
</Window>
Discrepancias entre las plantillas de CLI y Visual Studio
Es importante notar que la estructura genreada por la CLI difiere de la extensión de Visual Studio 2022. La extensión del IDE tiende a crear soluciones con múltiples proyectos (por ejemplo, separando la lógica de negocio de la interfaz de usuario). Además, se han reportado incompatibilidades al actualizar los paquetes NuGet a sus versiones más recientes en proyectos generados por el IDE, específicamente errores de compilación o ejecución con el componente DataGrid. En tales casos, revertir los paquetes a la versión base de la rama v11 suele resolver el problema, aunque se recomienda priorizar la CLI para evitar estas inconsistencias de plantillas.