Как я загружаю внешние шрифты в документ HTML?

Как я загружаю внешние файлы шрифтов в документ HTML.

Пример: Сделайте текст "и тому подобное и тому подобное вздором" пользовательский шрифт из файла TTF в том же каталоге с помощью CSS HTML и/или JavaScript

57
задан Eric 10 February 2010 в 14:40
поделиться

6 ответов

Взгляните на это A List Apart article . Соответствующий CSS:

@font-face {
  font-family: "Kimberley";
  src: url(http://www.princexml.com/fonts/larabie/kimberle.ttf) format("truetype");
}
h1 { font-family: "Kimberley", sans-serif }

Вышеупомянутое будет работать в Chrome / Safari / FireFox. Как отметил в комментариях Пол Д. Уэйт, вы можете заставить его работать с IE, если конвертируете шрифт в формат EOT .

Хорошая новость заключается в том, что в старых браузерах это, кажется, постепенно ухудшается, поэтому, если вы знаете и чувствуете себя комфортно с тем фактом, что не все пользователи будут видеть один и тот же шрифт, его можно использовать.

87
ответ дан 24 November 2019 в 19:32
поделиться

У Пола Айриша есть способ сделать это, покрывающий большинство распространенных проблем. См. Его пуленепробиваемую статью @ font-face :

Последний вариант, который предотвращает загрузку ненужных данных в IE и работает в IE8, Firefox, Opera, Safari и Chrome, выглядит следующим образом :

@font-face {
  font-family: 'Graublau Web';
  src: url('GraublauWeb.eot');
  src: local('Graublau Web Regular'), local('Graublau Web'),
    url("GraublauWeb.woff") format("woff"),
    url("GraublauWeb.otf") format("opentype"),
    url("GraublauWeb.svg#grablau") format("svg");
}

Он также ссылается на генератор , который переводит шрифты во все нужные вам форматы.

Как уже указывалось другими, это будет работать только в браузерах последнего поколения. Лучше всего использовать это вместе с чем-то вроде Cufon и загружать Cufon только в том случае, если браузер не поддерживает @ font-face .

19
ответ дан 24 November 2019 в 19:32
поделиться

Прямо из комментариев в settings.py...

MEDIA _ ROOT

MEDIA _ ROOT - абсолютный путь к каталогу, в котором хранятся носители, например /home/media/media.lawrence.com/.

MEDIA _ URL

MEDIA _ URL - это URL-адрес, который обрабатывает носитель, обслуживаемый с помощью MEDIA _ ROOT . При наличии компонента пути обязательно используйте завершающую косую черту (в других случаях необязательно). Примеры: " http://media.lawrence.com ", " http://example.com/media/ ".

Итак, перефразировать эти... MEDIA _ ROOT - это место физического размещения файлов в системе, а MEDIA _ URL - место сопоставления этих файлов. При разработке это не всегда может быть доступно, и в большинстве случаев среда разработки и производственная среда не совпадают, и это то, что вам придется вернуться и изменить. Другое дело, что это НЕ ХОРОШАЯ ПРАКТИКА, когда Джанго был разработан НЕ для обслуживания статического контента для вас.

Если вы собираетесь использовать это в разработке, я предлагаю использовать метод , ограничивающий его DEBUG = True . Указание Django обслуживать статический контент из временного места во время разработки, когда для DEBUG установлено значение True , является гораздо лучшей и более безопасной практикой. Вы НЕ собираетесь вводить сайт в производство с помощью DEBUG , верно? Ну, по крайней мере, не стоит.

Вот как я его реализовал:

settings.py:

STATIC_DOC_ROOT = os.path.join(os.getcwd(), 'site_media')

urls.py:

from django.conf import settings
## debug stuff to serve static media
if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', 
            {'document_root': settings.STATIC_DOC_ROOT}),
   )

Таким образом, любой проект, над которым я работаю, имеет сайт _ каталог носителей внутри него со всеми необходимыми носителями. В dev он является автономным, и мне не нужно переворачивать какие-либо биты в настройках, кроме DEBUG , что я бы делал в любом случае.

-121--1640921-

Посмотрите на использование селектора суррогата + суррогата. Что вместе со связующим на десериализации должны сделать трюк.

-121--3586979-

CSS3 предлагает способ выполнения с правилом @ font-face.

http://www.w3.org/TR/css3-webfonts/ # the-font-face-rule

http://www.css3.info/preview/web-fonts-with-font-face/

Здесь - это несколько различных способов работы в браузерах, не поддерживающих правило @ font-face.

3
ответ дан 24 November 2019 в 19:32
поделиться

Используйте SQLite. Затем можно запросить определенные данные и сохранить локальный файл. К вашему сведению - предложение PDO автоматически добавляет отдельные предложения вокруг значения.

$Filename = "MyDB.db";

try {
    $SQLHandle = new PDO("sqlite:".$Filename);
}
catch(PDOException $e) {
    echo $e->getMessage()." :: ".$Filename;
}

$SQLHandle->exec("CREATE TABLE IF NOT EXISTS MyTable (ID INTEGER PRIMARY KEY, MyColumn TEXT)");

$SQLHandle->beginTransaction();

$SQLHandle->exec("INSERT INTO MyTable (MyColumn) VALUES (".$SQLHandle->quote("MyValue").")");
$SQLHandle->exec("INSERT INTO MyTable (MyColumn) VALUES (".$SQLHandle->quote("MyValue 2").")");

$SQLHandle->commit();

$Iterator = $SQLHandle->query("SELECT * FROM MyTable ORDER BY MyColumn ASC");

unset($SQLHandle);

foreach($Iterator as $Row) {
    echo $Row["MyColumn"]."\n";
}
-121--3439009-

Поскольку Холст не имеет фиксированной ширины и высоты, я бы включил его в Поле просмотра :

<ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
        <Viewbox Stretch="Uniform">
            <Canvas x:Name="canvas" Background="DarkSeaGreen">
                <Canvas.LayoutTransform>
                <ScaleTransform ScaleY="-1" />
                </Canvas.LayoutTransform>
            </Canvas>
        </Viewbox>
    </ItemsPanelTemplate>
</ItemsControl.ItemsPanel>

Либо поместите весь Элемент управления пользователем в Поле просмотра .

-121--1683706-

Если вы хотите поддерживать больше браузеров, чем CSS3, вы можете посмотреть на библиотеку с открытым исходным кодом cufon javascript library

И вот API , если вы хотите делать больше фанковых вещей.

Major Pro: Позволяет делать то, что нужно.

Major Con: Запрещает выбор текста в некоторых браузерах, поэтому использование подходит для текстов заголовков (но вы можете использовать его на всем сайте, если хотите)

1
ответ дан 24 November 2019 в 19:32
поделиться

Относительно ответа Джея Стивенса: "Шрифты, доступные для использования в HTML-файле, должны присутствовать на компьютере пользователя и быть доступны из веб-браузера, поэтому, если вы не хотите распространять шрифты на компьютере пользователя через отдельный внешний процесс, это невозможно сделать". Это правда.

Но есть и другой способ использования javascript / canvas / flash - очень хорошее решение дает cufon: http://cufon.shoqolate.com/generate/ библиотека, которая генерирует очень простые в использовании внешние методы шрифтов.

1
ответ дан 24 November 2019 в 19:32
поделиться

Microsoft have a proprietary CSS method of including embedded fonts (http://msdn.microsoft.com/en-us/library/ms533034(VS.85).aspx), but this probably shouldn't be recommended.

I've used sIFR before as this works great - it uses Javascript and Flash to dynamically replace normal text with some Flash containing the same text in the font you want (the font is embedded in a Flash file). This does not affect the markup around the text (it works by using a CSS class), you can still select the text, and if the user doesn't have Flash or has it disabled, it will degrade gracefully to the text in whatever font you specify in CSS (e.g. Arial).

1
ответ дан 24 November 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: