¿Existe una manera sencilla de agregar fuentes?

¿Existe una manera sencilla de agregar fuentes?

Después de perder mi querida instalación de Gentoo de más de 5 años debido a una falla de hardware, fui a FreeBSD. Sentí que este era el siguiente paso lógico en mi exploración y uso de sistemas operativos basados ​​en código fuente. Al leer todos losdocumentación asociada para FreeBSD, al instalar el servidor XOrg, el5.6 - Uso de fuentes en la sección XOrgllamó mi atención. Al darme cuenta, nunca agregué la línea:

Section "Files"
   FontPath  "/usr/share/fonts/...."
EndSection

para cualquier fuente en mi instalación de Gentoo, ahora entiendo por qué mi DE parecía una mierda. Ser un mecanógrafo discapacitado con una sola mano hace que me resulte más difícil editar a Files Sectionmano y preferiría agregar fuentes a mano como último recurso. Como tal, ¿hay alguna manera de agregar el resultado fc-list : filea la Sección de Archivos xorg.confusando una herramienta que alguien creó y que aún no he encontrado, o algún script de shell sofisticado, etc., que los lectores aquí son tan buenos creando?

Nota: Lo uso nvidia-xconfigpara generar mi xorg.confarchivo, por lo que está lejos del enfoque modular recomendado hoy en día. ¿Puedo mezclar y combinar el enfoque conf.d con la configuración generada si es necesario?

Respuesta1

Si entiendo la pregunta y tiene vim instalado en el sistema (esto vitambién podría funcionar, ya que estos son solo excomandos),
ejecutar el siguiente comando en una terminal:

  • lea en el archivo: xorg.conf- obviamente reemplace esto con el archivo que desea modificar. Nota: este xorg.confarchivonomodificarse, en caso de que algo salga mal con el script.
  • hacer alguna manipulación de texto
  • la salida de los comandos se colocará en el archivo:/tmp/temp_xorg.conf

Si después de estas operaciones está satisfecho con el estado, /tmp/temp_xorg.confpuede copiarlo a la ubicación de su archivo de configuración xorg real y funcional.


ejecutar los comandos

ejecute esto en el símbolo del shell para generar directorios de rutas de fuentes que estén en un formato que pueda ir en un archivo de configuración xorg (gracias a @meuh por este comando).

fc-list : file | sed -E 's#(.*)/.*#\tFontPath "\1"#' | sort -u > /tmp/filepaths.txt

luego ejecute este comando, que tomará el resultado del comando anterior y lo insertará en las secciones "Archivos"

$ vim -e xorg.conf << 'EOF' 
" move cursor to the line with the text: `Section "Files"`
/Section "Files"
" read in the output of `fc-list` at this point
r !fc-list
write /tmp/temp_xorg.conf
EOF

Entonces, si por ejemplo, xorg.confse viera así:

Section "InputClass"
    Identifier  "trackpoint catchall"
    MatchIsPointer  "true"
    MatchProduct    "TrackPoint|DualPoint Stick"
    MatchDevicePath "/dev/input/event*"
    Option  "Emulate3Buttons"   "true"
    Option  "EmulateWheel"  "true"
    Option  "EmulateWheelButton"    "2"
    Option  "XAxisMapping"  "6 7"
    Option  "YAxisMapping"  "4 5"
EndSection

Section "Files"
    Identifier  "trackpoint catchall"
    MatchIsPointer  "true"
    MatchProduct    "TrackPoint|DualPoint Stick"
    MatchDevicePath "/dev/input/event*"
    Option  "Emulate3Buttons"   "true"
    Option  "EmulateWheel"  "true"
    Option  "EmulateWheelButton"    "2"
    Option  "XAxisMapping"  "6 7"
    Option  "YAxisMapping"  "4 5"
EndSection


Section "InputClass"
    Identifier  "trackpoint catchall"
    MatchIsPointer  "true"
    MatchProduct    "TrackPoint|DualPoint Stick"
    MatchDevicePath "/dev/input/event*"
    Option  "Emulate3Buttons"   "true"
    Option  "EmulateWheel"  "true"
    Option  "EmulateWheelButton"    "2"
    Option  "XAxisMapping"  "6 7"
    Option  "YAxisMapping"  "4 5"
EndSection

Después de ejecutar el comando anterior /tmp/temp_xorg.confdebería verse así:

Section "InputClass"
    Identifier  "trackpoint catchall"
    MatchIsPointer  "true"
    MatchProduct    "TrackPoint|DualPoint Stick"
    MatchDevicePath "/dev/input/event*"
    Option  "Emulate3Buttons"   "true"
    Option  "EmulateWheel"  "true"
    Option  "EmulateWheelButton"    "2"
    Option  "XAxisMapping"  "6 7"
    Option  "YAxisMapping"  "4 5"
EndSection

Section "Files"
    FontPath "/home/ubuntu/.fonts"
    FontPath "/usr/share/fonts/opentype/noto"
    FontPath "/usr/share/fonts/opentype/stix"
    FontPath "/usr/share/fonts/opentype/stix-word"
    FontPath "/usr/share/fonts/truetype"
    FontPath "/usr/share/fonts/truetype/abyssinica"
    FontPath "/usr/share/fonts/truetype/ancient-scripts"
    FontPath "/usr/share/fonts/truetype/dejavu"
    FontPath "/usr/share/fonts/truetype/fonts-guru-extra"
    FontPath "/usr/share/fonts/truetype/freefont"
    FontPath "/usr/share/fonts/truetype/kacst"
    FontPath "/usr/share/fonts/truetype/kacst-one"
    FontPath "/usr/share/fonts/truetype/lao"
    FontPath "/usr/share/fonts/truetype/lato"
    FontPath "/usr/share/fonts/truetype/liberation"
    FontPath "/usr/share/fonts/truetype/lohit-punjabi"
    FontPath "/usr/share/fonts/truetype/nanum"
    FontPath "/usr/share/fonts/truetype/openoffice"
    FontPath "/usr/share/fonts/truetype/padauk"
    FontPath "/usr/share/fonts/truetype/sinhala"
    FontPath "/usr/share/fonts/truetype/takao-gothic"
    FontPath "/usr/share/fonts/truetype/tibetan-machine"
    FontPath "/usr/share/fonts/truetype/tlwg"
    FontPath "/usr/share/fonts/truetype/ttf-khmeros-core"
    FontPath "/usr/share/fonts/truetype/ubuntu-font-family"
    FontPath "/usr/share/fonts/type1/gsfonts"
    FontPath "/usr/share/fonts/X11/Type1"
    Identifier  "trackpoint catchall"
    MatchIsPointer  "true"
    MatchProduct    "TrackPoint|DualPoint Stick"
    MatchDevicePath "/dev/input/event*"
    Option  "Emulate3Buttons"   "true"
    Option  "EmulateWheel"  "true"
    Option  "EmulateWheelButton"    "2"
    Option  "XAxisMapping"  "6 7"
    Option  "YAxisMapping"  "4 5"
EndSection


Section "InputClass"
    Identifier  "trackpoint catchall"
    MatchIsPointer  "true"
    MatchProduct    "TrackPoint|DualPoint Stick"
    MatchDevicePath "/dev/input/event*"
    Option  "Emulate3Buttons"   "true"
    Option  "EmulateWheel"  "true"
    Option  "EmulateWheelButton"    "2"
    Option  "XAxisMapping"  "6 7"
    Option  "YAxisMapping"  "4 5"
EndSection

Respuesta2

Para la parte de configuración de la pregunta "mezclar y combinar", la respuesta es "más o menos".

La xorg.confpágina de manual enumera las fuentes de configuración en orden de prioridad y dice "Cuando la misma información se proporciona de más de una manera, se utiliza el mecanismo de mayor prioridad".

Por observación (dado que "misma información" y "más de una forma" no están claramente definidos en la página de manual, en mi opinión), esto significa que no puede anular/actualizar una sección xorg.conf(como Section "Files"para las fuentes) con un xorg.conf.darchivo desde ese tiene menor precedencia. Aunque se leen y analizan los archivos de prioridad más baja, el contenido de las secciones se ignora silenciosamente para aquellas secciones que ya existen con una prioridad más alta.

El controlador Nvidia actual (396, solo en Linux)haceAhora use un xorg.conf.dfragmento, pero solo para el controlador DRM Xorg de Linux, todavía crea un fragmento casi monolítico xorg.confdurante la instalación.

Afortunadamente, nvidia-xconfigesta sección no cambia, por lo que si te ayuda, puedes comentarla xorg.confy migrarla a uno o más xorg.conf.darchivos. Varias secciones duplicadas con la misma precedencia, es decir, todas dentro de un único xorg.conf.ddirectorio,hacedar como resultado valores fusionados como se esperaba.

Una forma sencilla de generar las directivas es:

fc-list -f 'Fontpath "%{file|dirname}"\n' : | sort -u

Esto utiliza la salida formateada ( -f) fc-listpara crear las líneas de configuración requeridas, %{file}es el nombre de archivo de cada fuente, |dirnamees unfiltrarque genera el nombre del directorio (exactamente como el dirnamecomando de shell), luego sort -urutas únicas. Es posible que desees reordenar las rutas si tienes muchas fuentes; si tienes versiones de mapa de bits, puedes hacer algo como esto para reordenar:

fc-list -f '    Fontpath "%{file|dirname}"\n' :scalable=true | sort -u
fc-list -f '    Fontpath "%{file|dirname}"\n' :scalable=false | sort -u

Puede pegar ese resultado según sea necesario, o bien, como ejemplo de todos los pasos (como root).

# extract Files section from xorg.conf to a separate conf
sed -n '/^Section..Files/,/^EndSection/p' \
  < /etc/X11/xorg.conf > /etc/x11/xorg.conf.d/10-section-files.conf
# comment out Files section in xorg.conf
sed -i.bak '/^Section..Files/,/^EndSection/ s/^/#/' /etc/X11/xorg.conf

# paths for scalable fonts
( echo 'Section "Files"'; 
  fc-list -f '    Fontpath "%{file|dirname}"\n' :scalable=true | sort -u;
  echo 'EndSection' ) > /etc/X11/xorg.conf.d/20-fontpath.conf

# paths for non-scalable fonts
( echo 'Section "Files"'; 
  fc-list -f '    Fontpath "%{file|dirname}"\n' :scalable=False | sort -u;
  echo 'EndSection' ) > /etc/X11/xorg.conf.d/30-fontpath-fixed.conf

Reordene y elimine duplicados si es necesario y reinicie X.

Para completar, también puede modificar las rutas de las fuentes sobre la marcha con xset, por ejemplo

xset +fp /usr/local/share/fonts/TTF

Verifique las rutas actuales con xset q. Podría modificar esto trivialmente para agregar dichos comandos a su .xinitrcsecuencia de comandos, de modo que las rutas de fuentes persistan independientemente de cualquier cambio posterior en la configuración de X, y ahorre reiniciar X también.

información relacionada