Firefox'un Helvetica, Times, vb. İçin MS TrueType yazı tiplerini kullanması nasıl sağlanabilir?


7

Ubuntu iş istasyonumda (Windows) TrueType yazı tiplerini kullanıyorum ( ayrıntılar ) ve çoğunlukla hem masaüstü uygulamalarında hem de web'de (Firefox kullanarak) yazı tiplerinin görünmesinden memnunum.

Ancak, bazı web sayfalarında, Bunun gibi , yazı tipleri tamamen emmek:

screenshot

Sebebini buldum Helvetica bu sitenin CSS’sinde:

font-family: Helvetica,Arial,Tahoma,sans-serif;

Firebug'u kullanarak Helvetica'yı bu listeden çıkardığımda, Arial kullanıyor ve yeniden huzursuz görünüyor:

alt text

Benim sorum şu, Helvetica'yı (veya Times'ı veya diğer yazı tiplerini) kullanan web sayfalarının otomatik olarak güzel görünmesini nasıl sağlar? Başka bir deyişle, Times ve Helvetica font ailelerinin serif ve sans-serif varsayılanlarına nasıl eşleştirileceği (benim durumumda sırasıyla Times New Roman ve Arial)?

Firefox’ta, Firefox’ta düzenlenmiş Ubuntu font yapılandırmalarını veya özel CSS kurallarını (veya şu anda hakkında hiçbir ipucum olmayan bir şeyi) temel almasın, bu senaryoda Firefox’un MS TrueType fontlarını kullanmasını sağlayan herhangi bir çözümle ilgileniyorum.

Güncelleştirme : Şimdi problemi tamamen çözdüm - bu cevap Ne yapmam gerektiğini açıklar.


Bekle, bir gelişme var mı?
Josh Hunt

Evet kesinlikle. Fakat insanların ne tür fontları tercih ettiklerini tahmin ediyorum bir kişiden diğerine değişiyor. Örneğin iki ekran görüntüleri superuser.com/questions/19824/better-ubuntu-fonts
Jonik

Üzgünüm, yine de kendini beğenmiş bir mac kullanıcısı yapıyordum. imgur.com/dYFBQ.png
Josh Hunt

Vay, her iki ekran görüntüsüyle de aslında Helvetica veya Arial olduğundan emin olamadım, ancak küçük harf A onaylıyor gibi gözüküyor ... Referanslı ayrıntıları okuduğumda küçük fontlarda antialiasing yapmayı sevmediğinizi okudum boyutları, bu yüzden başlamam. ;-)
Arjan

Sadece biliyorsunuz ki, "Nimbus Sans L" postscript yazı tipi orada kötü rasterleştiriliyor.
sgm

Yanıtlar:


6

Düzenle : Bir meslektaşımdan bir kaç atılım tavsiyesi aldıktan sonra bu cevabı tamamen güncelledim.

İşte ne ekledim /etc/fonts/local.conf (içinde <fontconfig> öğesi):

<!-- Replace Helvetica with Arial -->
<match target="pattern">
    <test qual="any" name="family">
        <string>Helvetica</string>
    </test>
    <edit name="family" mode="assign" binding="strong">
        <string>Arial</string>
    </edit>
</match>    

Benzer şekilde Times için - & gt; Times New Roman. (Bakın tam local.conf İşte .) Anahtar kullanmaktı bağlayıcı = "güçlü" için <edit> öğesi. (Ayrıca, "ata" yerine "assign_replace" modunun kullanılması da benzer bir duruma neden olur, ancak bunun dışında çok da saldırgan olur: Verdana da Arial ile değiştirilir.

Yazı tipi yapılandırmalarındaki değişiklikler hemen etkili olur. Firefox'ta test etmenin yanı sıra, bunun böyle çalıştığını kontrol edebilirsiniz:

$ fc-match helvetica
Arial.ttf: "Arial" "Normal"

Sorun yaşarsanız, en iyi yardım yakındır: man fonts-conf. (Her ne kadar dokümantasyonda bile, yazı tipi sisteminin çalışması bana biraz karışık ya da görünmez geliyordu.) Ayrıca, gerçekten böyle bir komut kullanmaya devam edenleri "ayıklamayı" deneyebilirsiniz:

FC_DEBUG=4 fc-match helvetica

Ek olarak, FC_DEBUG=1024 fc-match helvetica yazı tipi eşleşmesini etkileyen yapılandırma dosyalarının listesini gösterir.


1

Opera'da da benzer bir sorun yaşadım, çözümün config "Core X Fonts" u devre dışı bırakmasıydı. Firefox'ta benzer bir seçenek olup olmadığını görmenizi öneririm.

Diğer seçenekler:

  • "Helvetica" adında bir fontun yüklü olmadığını kontrol edin, bana birkaç kez benzer şeyler oldu. IIRC problemli fontlar denilen klasörlerdeydi 100dpi ve 75dpi sistem font klasöründe ( /usr/local/share/fonts Bence). Ben sadece o klasörleri oradan tamamen çıkardım.
  • Altındaki varsayılanları kontrol et Sistem & gt; Tercihler & gt; Görünüm & gt; Yazı .
  • Firefox’un varsayılan değerlerini kontrol edin. Tercihler & gt; içerik .

Çekirdek klasörlerde değişiklik yaparsanız, font önbelleğini aşağıdaki şekilde yeniden oluşturmanız gerekir:

sudo fc-cache -f -v

Ah, bunu daha önce farketmedim. Core X fontlarını devre dışı bırakarak ne demek istiyorsunuz? config içinde - nerede tam olarak? Ayrıca, Sistem nedir? Tercihler & gt; Yazı tipi? Gnome font yapılandırma aracı? Ubuntu’da KDE kullanıyorum ancak Gnome’da da yüklü. Bunları başlatmak için komut isimlerini verebilseydiniz bu en faydalı olurdu.
Jonik

Opera'da opera:config ama Firefox’ta about:config. Bunu adres çubuğuna yazın, ejderhalar hakkında bir uyarı alabilirsiniz; D ama devam edin. Bir filtre kutusu var - "font" kelimesini aramanızı ve ne gibi seçenekler aldığınızı görmenizi öneririm.
DisgruntledGoat

Cevabım düzeltildi, öyle Sistem & gt; Tercihler & gt; Görünüm & gt; Yazı Ubuntu’da Listelenen her bir yazı tipinin (Uygulama / Belge / vb.) Uygun olduğundan emin olun. En iyi görünüm için "Subpixel smoothing" seçmenizi de tavsiye ederim.
DisgruntledGoat

Yazı tipi önbelleği yeniden oluşturma ve alt piksel düzeltme için +1.
Swoogan

0

Araba tamircisi Sorunuz için bir çözüm olacak. Bu eklentiyi yüklediğinizde web sayfalarını özelleştirebilir ve yazı tiplerini değiştirebilirsiniz.

ve yazı tipini Helvita olarak değiştiren bir örnek komut dosyası

// ==UserScript==
// @name           Google Reader Font in Helvetica and enlarged
// @version        1.0
// @creator        Joe
// @description    Changes the font family and size from Google Reader page
// @namespace      userscripts.org
// @include        https://www.google.com/reader/*
// @include        http://www.google.com/reader/*

// ==/UserScript==

function addGlobalStyle(css) {
    var head, style;
    head = document.getElementsByTagName('head')[0];
    if (!head) { return; }
    style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
}

addGlobalStyle('.entry-body{font-family:Helvetica;font-size:110%;line-height:150%;}');
addGlobalStyle('A.entry-title-link {font-family:Helvetica;font-size: 20px;}');

Hmm, sanırım yanlış yoldan anladım: istiyorum Helvetica veya Times tanımlarını kaldırın (veya bunları sans-serif ve serif ile değiştiriniz)
Jonik

Bu, size fontu nasıl değiştireceğinizi gösteren bir örnek, bu yüzden ihtiyaçlarınızı karşılamak için sadece betiği değiştirmeniz gerekiyor.
admintech

Doğru ... pekala, neyse ki daha basit bir yol buldum - CSS korsanına gerek yok: superuser.com/questions/54216/...
Jonik

0

Merak ediyorum, yerel fontları ve @font face css'i kullanabilir misiniz?


Hmm, tam olarak ne demek istediğinizi tam olarak anlamadım, ama zaten ihtiyacım olanı buldum: superuser.com/questions/54216/... Bu çok basit, sistem çapında bir çözüm.
Jonik

@font face CSS. Kafamın içine giren bir fikirdi, onunla dalga geçebilirdim. FF'nin kendi web sitenizdeki fontları kullanması için @ font-face'i kullanabilirsiniz, hatta standart FF css'i değiştirerek yerel bile kullanabilirsiniz (daha fazla bilgi için google @ font-face)
alpha1

0

Bu betiğe herhangi bir şekilde bir "Hibe" eklemelisin ...

Greasemonkey 1.0, özel bir Meta Veri Bloğu zorunluluğu ekler: @grant.

If a script does not specify any @grant values, Greasemonkey 1.0-1.9 will attempt to auto-detect the right settings. From GreaseMonkey 2.0, @grant none is assumed by default, if no other values are specified.[1]
If a script specifies any values (or they were auto detected), then it will be provided with only those API methods that it declares.
    The valid values are unsafeWindow, and the names of those GM_ prefixed values that you wish your script to be granted access to.
Otherwise the script will be granted no special API privileges, and thus run without the security constraints Greasemonkey scripts have traditionally had. If you want your script to operate in this mode, you should explicitly declare @grant none.

Örnekler

Herhangi bir özel API kullanmamak, komut dosyalarında (son sayımın yarısından fazlası) yaygındır. Bu tür komut dosyaları için açıkça özel ayrıcalıklar tanınmasını istemek, komut dosyasının doğrudan içerik sayfasında yürütüleceği anlamına gelir. Bu, güvenlik sanal alanı ve sınırlamalarının hiçbiri olmadığı anlamına gelir; bu nedenle sayfadaki değişkenlere erişmek yalnızca çalışır, işlevleri çağırır ve sonuçlarını okumak çalışır. Bunu yapmak için, basitçe:

// ==UserScript==
// @name        Grant None Example (can be omitted since GM 2.0)
// @include     http*
// @grant       none
// ==/UserScript==
console.log('This script grants no special privileges, so it runs without security limitations.');

Greasemonkey'in API'lerinden birini kullanıyorsanız, açıkça betiğinize verilmesini istemeniz gerekir:

// ==UserScript==
// @name        Grant Some Example
// @include     http*
// @grant       GM_getValue
// @grant       GM_setValue
// ==/UserScript==

var counter = GM_getValue('counter', 0);
console.log('This script has been run ' + counter + ' times.');
GM_setValue('counter', ++counter);

Bu durumda, komut dosyasına her ikisine de erişim izni verilmesini istiyor GM_getValue ve GM_setValue, her biri birer tane @grant hat. Erişim izni verilecek herhangi bir Greasemonkey API'sinin adını belirtin. (Tüm komut dosyaları her zaman almak GM_info özellikle istemeksizin.) Geçici olarak, bu da işe yarayabilir:

// ==UserScript==
// @name        Grant Legacy Example
// @include     http*
// ==/UserScript==

var counter = GM_getValue('counter', 0);
console.log('This script has been run ' + counter + ' times.');
GM_setValue('counter', ++counter);

Bu örnek Greasemonkey sürüm 1.0'da çalışacaktır. @Grant satırı olmadığında, Greasemonkey hangi API'lerin kullanıldığını algılamaya çalışır ve bu @grant satırları belirtilmiş gibi davranır. Bu algılama, bazı durumlarda, özellikle de eval() kullanıldı.

@Grant'tan önce yazılan tüm komut dosyaları bu nedenle çalışmaya devam etmelidir, ancak komut dosyalarınızı en kısa zamanda uygun şekilde @grant olarak belirtmelisiniz, bu nedenle gelecekte kırılmazlar. Uyumluluk Katmanı

Greasemonkey API'lerinin çoğu, DOM Storage gibi web standartları tarafından çoğaltılmıştır. Komut dosyanızın yalnızca tek bir etki alanında çalışmasını beklerseniz, derhal herhangi bir dezavantaj olmadan @grant none ve arttırılmış uyumluluğunu kullanabilirsiniz. Artık standart tarayıcı özelliklerine sahip Greasemonkey API'lerini taklit etmek için bir @require kütüphanesi kullanın:

// ==UserScript==
// @name        Grant None Example, With Shim
// @include     http://www.example.com/*
// @grant       none
// @require     https://gist.githubusercontent.com/arantius/3123124/raw/grant-none-shim.js
// ==/UserScript==

var counter = GM_getValue('counter', 0);
console.log('This script has been run ' + counter + ' times.');
GM_setValue('counter', ++counter);

Bu komut dosyası, yukarıdaki hiçbir örnekle aynı şekilde çalışacaktır, bunlara hiçbir şim vermemek, standart tarayıcı özellikleriyle API emülasyonu sağlamaktır. Shim uyumluluğu katmanı, komut dosyanız için yeterince iyi çalıştığında, bu her iki dünyanın da en iyisidir. kapsam

Hiçbiri hibe durumunda, kullanıcı betiğinin içerik sayfasının global kapsamından farklı olarak kendi global kapsamı vardır. Bu bir üst düzey anlamına gelir var x = 1; içerik kapsamına görünmez ve bu nedenle sayfayı kırmaz (yani, farklı bir değere sahip x değişkenine bağlıysa). İçerik kapsamına değerler yazmak için window.x = 1;.

Eğer sen @require bir jQuery sürümü, örtük olarak atayacaktır window.$ ve window.jQuery. Çalıştırdığınız sayfa jQuery'nin farklı bir sürümüne bağlıysa, bu sayfa kırılabilir. Bu soruna geçici bir çözüm bulmak için, komut dosyanızın en üst düzeyindeki herhangi bir yerde şunları yapın:

this.$ = this.jQuery = jQuery.noConflict(true);

Bu kod, bir jQuery referansını kaydeder (buna, betiğin hiçbiri hibe modunda çalışırken genel kapsamı), pencereden kaldırırken (genel içerik kapsamı) ve orjinalinde saklanan herhangi bir şeyi geri yükler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.