5

data-uri-scheme を使用してカスタム フォントを CSS に含めようとしています。CQ5 (私はバージョン 5.5 を使用しています) は、clientlib ディレクトリから、data-uri-scheme フォント データを含む css ファイルが配置されている場所へのパスを追加しています。

したがって、css プロパティを無視する代わりに、次のようにします。

@font-face {
  font-family: 'CustomFont';
  src: url(data:application/x-font-woff;...
  ...
}

CQ5 は次のことを行います。

@font-face {
  font-family: 'CustomFont';
  src: url(desktop/css/data:application/x-font-woff;...
  ...
}

これは CQ5.5 のバグですか、それとも「desktop/css」の追加を防ぐために何かを追加/実行できますか?

その結果、フォントが「見つからない」ため、404 HTTP ステータスが返されます。

[更新] :

css ファイルはbase.jsphtml<head>セクションに含まれています。

<link rel="stylesheet" 
    href="/etc/designs/myproject/clientlib/desktop.css" type="text/css"/ >

の場所base.jsp:

/apps/myproject/pages/base/base.jsp

の場所css.txt:

/etc/designs/myproject/clientlib/desktop/css.txt
4

4 に答える 4

3

バグのようです。CSS は、結合された CSS ファイルを作成するために連結された CSS ファイルで特に url('{}') を検索するメソッド (CssFileBuilder#resolveUrl(String[], String[], String)) を介して渡されます。このメソッドはデータ スキームを考慮していないように見えます。代わりに、URL の長さが 0 の場合、スラッシュ (/) で始まる場合、またはパターン "^[A-Za-z][ A-Za-z0-9+\-.] ://. " (実質的に外部リンク)。私の推測では、相対 url('{}') 値を変更するためにこれを行うと思われますが、データ スキームは考慮されていませんでした。

Adobe で Daycare チケットを開いて、data-uri-scheme をサポートするようにこのメソッドを更新することをお勧めします。

于 2012-12-22T23:00:03.070 に答える
2

これはバグで、5.6 で修正される予定です。個々のcssファイルを(前述のように)直接含めると、clientlibの書き換えが回避されます。そうしないと、clientlib内の回避策がわかりません。

その理由は、ベースが個々の css ファイルから連結された clientlib css に変更されるため、clientlibs が相対パスを書き換えているためです。ここでは、「data:」URI が適切に考慮されていませんでした。

于 2013-01-03T14:10:01.407 に答える
2

CQ5 の (通常は役立つ) リンクの書き換えを回避するための 2 つの戦略:

(1) @font-face コードを、CQ5 によってアセンブルされた外部 .css ファイルに配置します。<cq:includeClientLib>タグを使用して HTML に含める代わりに、<link> タグを明示的にコーディングする必要がある場合があります。次に例を示します。

<link rel="stylesheet" href="<%= currentDesign.getPath() %>/clientlibs/themes/default.css" type="text/css" media="screen" />

(2) document.write() 呼び出しで @font-face コードを挿入します。

<script type="text/javascript">
    document.write("@font-face { font-family: 'CustomFont'; src: url(data:application/x-font-woff;
    ...}");
</script>
于 2012-12-18T14:52:55.217 に答える
0

置き忘れた書き換えの原因を確認せずに、Day CQ Link Checker Service.

Special Link Prefixまたはを追加しSpecial Link Patternて、このパターンがリンクとして識別され、まったく書き換えられないようにすることができます。

そのため、前述の変更を加えて、/apps/.. (libs の下の対応する構成のオーバーレイ) の下にカスタム linkchecker 構成を追加するだけで問題ありません。

于 2013-01-02T17:58:40.950 に答える