Menemukan font di Linux (dalam C++)

Saya ingin mendapatkan jalur absolut ke file font ttf di Linux ketika diberi nama font (jika ada). Apakah ada perintah atau API yang akan mengembalikan informasi tersebut?

Misalnya, dengan "arial.ttf" saya ingin mencari jalur absolut (mis. /usr/share/fonts/truetype/msttcorefonts/arial.ttf) di mana pun itu berada.


person Kazade    schedule 03.12.2010    source sumber
comment
kemungkinan duplikat Bagaimana cara mendapatkan daftar True Type Font yang terinstal di Linux menggunakan C atau C++?   -  person Martin York    schedule 03.12.2010


Jawaban (2)


Cara termudah mungkin menggunakan fontconfig dengan opsi --format:

$ fc-match --format=%{file} LiberationSans-Regular.ttf

akan menghasilkan output

/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf

Selain nama file font, Anda juga dapat memberikan deskripsi font seperti mono, DejaVu, :weight=bold, DejaVu-12, atau DejaVu:weight=bold. Jadi, misalnya,

$ fc-match --format=%{file} :weight=bold

menghasilkan

/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf

pada sistem saya. Satu-satunya hal yang tampaknya tidak berhasil adalah memberikan path lengkap dari file font.

person cmaster - reinstate monica    schedule 23.04.2014
comment
bagaimana Anda bisa memberikan deskripsi font? tolong bisakah Anda memberikan beberapa contoh? - person Mohan; 18.11.2016
comment
@Mohan Seperti yang saya katakan: Ganti saja nama file dengan deskripsi font. Saya telah menambahkan contoh yang berfungsi untuk deskripsi font sekarang. Semoga ini bisa membantu. - person cmaster - reinstate monica; 21.11.2016

Bisa dibilang, mencoba mengakses font melalui jalur adalah ide yang sangat buruk, tumpukan font linux tidak dirancang dengan cara ini. Tidak akan ada stabilitas apa pun di lokasi dan banyak "font" yang diharapkan pengguna dalam daftar font tidak dipetakan ke satu file font tetapi merupakan gabungan dari beberapa file font.

Jika Anda ingin konsisten dengan semua aplikasi desktop lainnya (dan pengguna mengharapkan pilihan font bekerja dengan cara yang sama di semua aplikasi), Anda perlu mengakses font berdasarkan pola melalui lapisan tipuan fontconfig (menggunakan pango-cairo, atau QT) dan menerima hasilnya mungkin rumit dan tidak intuitif.

Tidak masalah jika hal itu tampak kurang intuitif bagi Anda, yang penting adalah pemilihan font berfungsi dengan cara yang sama seperti di semua aplikasi lainnya. Dan biasanya ada alasan bagus untuk pilihan pemetaan fontconfig.

person nim    schedule 24.04.2014