|
915 | 915 | </schedule> |
916 | 916 | </integrity> |
917 | 917 |
|
| 918 | + <!-- ═══════════════════════════════════════════════════════════════════════════ |
| 919 | + FONT CONFIGURATION |
| 920 | + ═══════════════════════════════════════════════════════════════════════════ |
| 921 | + Remote font loading for all NWE web frontends. |
| 922 | +
|
| 923 | + HIERARCHY: |
| 924 | + 1. Global default (applies to all modules unless overridden) |
| 925 | + 2. Per-module override (if <override-global>true</override-global>) |
| 926 | + 3. Fallback (system fonts if remote fonts unavailable) |
| 927 | +
|
| 928 | + Modules include fonts via <link> in their JSP <head> sections. |
| 929 | + CSS var(--font) and var(--font-mono) reference these families. |
| 930 | + ═══════════════════════════════════════════════════════════════════════════ --> |
| 931 | + <fonts> |
| 932 | + <enabled>true</enabled> |
| 933 | + <provider>Google Fonts</provider> |
| 934 | + |
| 935 | + <!-- ── GLOBAL DEFAULT (all modules) ──────────────────────────────────── --> |
| 936 | + <global> |
| 937 | + <primary> |
| 938 | + <family>IBM Plex Sans</family> |
| 939 | + <weights>300,400,500,600,700</weights> |
| 940 | + <url>https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400;1,600&display=swap</url> |
| 941 | + <css>font-family: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;</css> |
| 942 | + </primary> |
| 943 | + <monospace> |
| 944 | + <family>IBM Plex Mono</family> |
| 945 | + <weights>400,500,600</weights> |
| 946 | + <url>https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap</url> |
| 947 | + <css>font-family: 'IBM Plex Mono', 'JetBrains Mono', 'Fira Code', monospace;</css> |
| 948 | + </monospace> |
| 949 | + </global> |
| 950 | + |
| 951 | + <!-- ── FONT LIBRARY (available for per-module override) ──────────────── --> |
| 952 | + <library> |
| 953 | + <font id="ibm-plex-sans"> |
| 954 | + <family>IBM Plex Sans</family> |
| 955 | + <category>sans-serif</category> |
| 956 | + <weights>300,400,500,600,700</weights> |
| 957 | + <url>https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400;1,600&display=swap</url> |
| 958 | + <description>Clean, technical, professional. IBM design language.</description> |
| 959 | + </font> |
| 960 | + <font id="inter"> |
| 961 | + <family>Inter</family> |
| 962 | + <category>sans-serif</category> |
| 963 | + <weights>300,400,500,600,700,800</weights> |
| 964 | + <url>https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap</url> |
| 965 | + <description>Modern, highly legible, variable font. Popular for UI/dashboards.</description> |
| 966 | + </font> |
| 967 | + <font id="roboto"> |
| 968 | + <family>Roboto</family> |
| 969 | + <category>sans-serif</category> |
| 970 | + <weights>300,400,500,700</weights> |
| 971 | + <url>https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,500;0,700;1,400&display=swap</url> |
| 972 | + <description>Google's signature font. Neutral, friendly, widely used.</description> |
| 973 | + </font> |
| 974 | + <font id="merriweather"> |
| 975 | + <family>Merriweather</family> |
| 976 | + <category>serif</category> |
| 977 | + <weights>300,400,700,900</weights> |
| 978 | + <url>https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,300;0,400;0,700;0,900;1,400&display=swap</url> |
| 979 | + <description>Elegant serif. Excellent readability on screens. Academic/literary.</description> |
| 980 | + </font> |
| 981 | + <font id="open-sans"> |
| 982 | + <family>Open Sans</family> |
| 983 | + <category>sans-serif</category> |
| 984 | + <weights>300,400,500,600,700</weights> |
| 985 | + <url>https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap</url> |
| 986 | + <description>Friendly, neutral humanist sans-serif. Extremely popular.</description> |
| 987 | + </font> |
| 988 | + <font id="lato"> |
| 989 | + <family>Lato</family> |
| 990 | + <category>sans-serif</category> |
| 991 | + <weights>300,400,700,900</weights> |
| 992 | + <url>https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,300;0,400;0,700;0,900;1,400&display=swap</url> |
| 993 | + <description>Warm, stable, serious but friendly. Good for body text.</description> |
| 994 | + </font> |
| 995 | + <font id="source-sans-3"> |
| 996 | + <family>Source Sans 3</family> |
| 997 | + <category>sans-serif</category> |
| 998 | + <weights>300,400,500,600,700</weights> |
| 999 | + <url>https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap</url> |
| 1000 | + <description>Adobe's open-source sans-serif. Technical documentation friendly.</description> |
| 1001 | + </font> |
| 1002 | + <font id="nunito"> |
| 1003 | + <family>Nunito</family> |
| 1004 | + <category>sans-serif</category> |
| 1005 | + <weights>300,400,500,600,700,800</weights> |
| 1006 | + <url>https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,400&display=swap</url> |
| 1007 | + <description>Rounded, friendly, modern. Fun and approachable.</description> |
| 1008 | + </font> |
| 1009 | + <font id="playfair-display"> |
| 1010 | + <family>Playfair Display</family> |
| 1011 | + <category>serif</category> |
| 1012 | + <weights>400,500,600,700,800</weights> |
| 1013 | + <url>https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400&display=swap</url> |
| 1014 | + <description>High-contrast serif. Headlines, editorial, luxury feel.</description> |
| 1015 | + </font> |
| 1016 | + <font id="jetbrains-mono"> |
| 1017 | + <family>JetBrains Mono</family> |
| 1018 | + <category>monospace</category> |
| 1019 | + <weights>400,500,600,700</weights> |
| 1020 | + <url>https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap</url> |
| 1021 | + <description>Developer-focused monospace. Ligatures, clear at small sizes.</description> |
| 1022 | + </font> |
| 1023 | + <font id="fira-code"> |
| 1024 | + <family>Fira Code</family> |
| 1025 | + <category>monospace</category> |
| 1026 | + <weights>300,400,500,600,700</weights> |
| 1027 | + <url>https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;400;500;600;700&display=swap</url> |
| 1028 | + <description>Monospace with programming ligatures. Popular in editors.</description> |
| 1029 | + </font> |
| 1030 | + <font id="ibm-plex-mono"> |
| 1031 | + <family>IBM Plex Mono</family> |
| 1032 | + <category>monospace</category> |
| 1033 | + <weights>400,500,600</weights> |
| 1034 | + <url>https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap</url> |
| 1035 | + <description>IBM Plex family monospace. Clean, technical.</description> |
| 1036 | + </font> |
| 1037 | + </library> |
| 1038 | + |
| 1039 | + <!-- ── PER-MODULE FONT OVERRIDES ─────────────────────────────────────── |
| 1040 | + Set override-global to true to use a module-specific font instead |
| 1041 | + of the global default. Reference fonts by id from the library above. |
| 1042 | + ──────────────────────────────────────────────────────────────────────── --> |
| 1043 | + <module-overrides> |
| 1044 | + <!-- Example: UNCW uses Nunito (friendly, fun, rounded) --> |
| 1045 | + <module id="UNCW" context="/uncw"> |
| 1046 | + <override-global>true</override-global> |
| 1047 | + <primary-font>nunito</primary-font> |
| 1048 | + <monospace-font>ibm-plex-mono</monospace-font> |
| 1049 | + </module> |
| 1050 | + |
| 1051 | + <!-- Example: Communicator uses Inter (modern UI) --> |
| 1052 | + <module id="Communicator" context="/chat"> |
| 1053 | + <override-global>false</override-global> |
| 1054 | + <primary-font>inter</primary-font> |
| 1055 | + <monospace-font>jetbrains-mono</monospace-font> |
| 1056 | + </module> |
| 1057 | + |
| 1058 | + <!-- Example: Defined uses Source Sans 3 (technical docs) --> |
| 1059 | + <module id="Defined" context="/defined"> |
| 1060 | + <override-global>false</override-global> |
| 1061 | + <primary-font>source-sans-3</primary-font> |
| 1062 | + <monospace-font>fira-code</monospace-font> |
| 1063 | + </module> |
| 1064 | + |
| 1065 | + <!-- All other modules: use global default (IBM Plex Sans) --> |
| 1066 | + </module-overrides> |
| 1067 | + |
| 1068 | + <!-- ── FALLBACK (if Google Fonts unavailable) ────────────────────────── --> |
| 1069 | + <fallback> |
| 1070 | + <primary>-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif</primary> |
| 1071 | + <monospace>'JetBrains Mono', 'Fira Code', 'Courier New', monospace</monospace> |
| 1072 | + </fallback> |
| 1073 | + |
| 1074 | + <!-- ── PRECONNECT TAGS (always include in <head>) ────────────────────── --> |
| 1075 | + <preconnect><![CDATA[<link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/>]]></preconnect> |
| 1076 | + |
| 1077 | + <!-- Auto-inject font link tags during deploy --> |
| 1078 | + <auto-inject>true</auto-inject> |
| 1079 | + </fonts> |
| 1080 | + |
918 | 1081 | <!-- ═══════════════════════════════════════════════════════════════════════════ |
919 | 1082 | PORT SCHEDULE & ACCESS CONTROL |
920 | 1083 | ═══════════════════════════════════════════════════════════════════════════ |
|
0 commit comments