UDHOV commited on
Commit
3fa3ef8
Β·
1 Parent(s): 85092d0

added font path for HF Spaces

Browse files
Files changed (2) hide show
  1. Dockerfile +4 -3
  2. src/streamlit_app.py +32 -7
Dockerfile CHANGED
@@ -4,11 +4,13 @@ FROM python:3.11-slim
4
  WORKDIR /app
5
 
6
  # Install system dependencies
 
7
  RUN apt-get update && apt-get install -y \
8
  build-essential \
9
  curl \
10
  git \
11
  fontconfig \
 
12
  && rm -rf /var/lib/apt/lists/*
13
 
14
  # Copy requirements first for better Docker layer caching
@@ -27,9 +29,9 @@ RUN mkdir -p /app/fonts && \
27
  -o /app/fonts/Kalimati.ttf || \
28
  curl -L "https://github.com/virtual-labs/virtual-labs.github.io/raw/master/fonts/Kalimati.ttf" \
29
  -o /app/fonts/Kalimati.ttf || \
30
- echo "WARNING: Kalimati font download failed, Devanagari may not render correctly"
31
 
32
- # Register font with system font cache
33
  RUN if [ -f /app/fonts/Kalimati.ttf ]; then \
34
  mkdir -p /usr/local/share/fonts/nepali && \
35
  cp /app/fonts/Kalimati.ttf /usr/local/share/fonts/nepali/ && \
@@ -37,7 +39,6 @@ RUN if [ -f /app/fonts/Kalimati.ttf ]; then \
37
  fi
38
 
39
  # Set environment variables
40
- # PYTHONPATH includes both /app (for scripts/) and /app/src (for streamlit_app.py imports)
41
  ENV PYTHONPATH=/app:/app/src
42
  ENV HF_HOME=/tmp/huggingface
43
  ENV TRANSFORMERS_CACHE=/tmp/huggingface
 
4
  WORKDIR /app
5
 
6
  # Install system dependencies
7
+ # fonts-noto-extra provides NotoSansDevanagari as fallback if Kalimati download fails
8
  RUN apt-get update && apt-get install -y \
9
  build-essential \
10
  curl \
11
  git \
12
  fontconfig \
13
+ fonts-noto-extra \
14
  && rm -rf /var/lib/apt/lists/*
15
 
16
  # Copy requirements first for better Docker layer caching
 
29
  -o /app/fonts/Kalimati.ttf || \
30
  curl -L "https://github.com/virtual-labs/virtual-labs.github.io/raw/master/fonts/Kalimati.ttf" \
31
  -o /app/fonts/Kalimati.ttf || \
32
+ echo "WARNING: Kalimati font download failed, falling back to Noto Sans Devanagari"
33
 
34
+ # Register Kalimati font with system font cache
35
  RUN if [ -f /app/fonts/Kalimati.ttf ]; then \
36
  mkdir -p /usr/local/share/fonts/nepali && \
37
  cp /app/fonts/Kalimati.ttf /usr/local/share/fonts/nepali/ && \
 
39
  fi
40
 
41
  # Set environment variables
 
42
  ENV PYTHONPATH=/app:/app/src
43
  ENV HF_HOME=/tmp/huggingface
44
  ENV TRANSFORMERS_CACHE=/tmp/huggingface
src/streamlit_app.py CHANGED
@@ -159,19 +159,44 @@ st.markdown("""
159
 
160
  @st.cache_resource
161
  def load_nepali_font():
162
- """Load Nepali font for matplotlib visualizations."""
 
 
 
 
 
 
163
  font_paths = [
164
- # HF Spaces / Docker β€” Kalimati downloaded by Dockerfile into /app/fonts/
 
165
  '/app/fonts/Kalimati.ttf',
166
- # Kalimati registered system-wide by fc-cache in Dockerfile
167
  '/usr/local/share/fonts/nepali/Kalimati.ttf',
168
- # Local development (absolute path relative to script)
169
  os.path.join(BASE_DIR, 'fonts', 'Kalimati.ttf'),
 
170
  'fonts/Kalimati.ttf',
171
- # macOS
 
 
 
 
 
 
 
 
 
 
 
172
  '/System/Library/Fonts/Supplemental/DevanagariSangamMN.ttc',
173
- # Windows
174
- 'C:\\Windows\\Fonts\\NirmalaUI.ttf',
 
 
 
 
 
 
175
  ]
176
 
177
  for font_path in font_paths:
 
159
 
160
  @st.cache_resource
161
  def load_nepali_font():
162
+ """Load Nepali font for matplotlib visualizations.
163
+
164
+ Tries multiple font paths in order of preference:
165
+ 1. Kalimati (primary β€” downloaded by Dockerfile)
166
+ 2. Noto Sans Devanagari (Linux/HF Spaces fallback)
167
+ 3. Other system Devanagari fonts (macOS, Windows)
168
+ """
169
  font_paths = [
170
+ # ── Kalimati (primary) ──────────────────────────────────────────
171
+ # HF Spaces / Docker β€” downloaded by Dockerfile curl command
172
  '/app/fonts/Kalimati.ttf',
173
+ # Registered system-wide by fc-cache in Dockerfile
174
  '/usr/local/share/fonts/nepali/Kalimati.ttf',
175
+ # Local dev β€” absolute path relative to script location
176
  os.path.join(BASE_DIR, 'fonts', 'Kalimati.ttf'),
177
+ # Local dev β€” relative path
178
  'fonts/Kalimati.ttf',
179
+
180
+ # ── Noto Sans Devanagari (Linux / HF Spaces fallback) ───────────
181
+ '/usr/share/fonts/truetype/noto/NotoSansDevanagari-Regular.ttf',
182
+ '/usr/share/fonts/truetype/noto/NotoSansDevanagari[wdth,wght].ttf',
183
+ '/usr/share/fonts/opentype/noto/NotoSansDevanagari-Regular.otf',
184
+ '/usr/share/fonts/noto/NotoSansDevanagari-Regular.ttf',
185
+ # Noto Serif Devanagari variant
186
+ '/usr/share/fonts/truetype/noto/NotoSerifDevanagari-Regular.ttf',
187
+ # Generic Noto fallback
188
+ '/usr/share/fonts/truetype/noto/NotoSans-Regular.ttf',
189
+
190
+ # ── macOS ────────────────────────────────────────────────────────
191
  '/System/Library/Fonts/Supplemental/DevanagariSangamMN.ttc',
192
+ '/System/Library/Fonts/Supplemental/DevanagariMT.ttc',
193
+ '/Library/Fonts/Devanagari Sangam MN.ttc',
194
+
195
+ # ── Windows ─────────────────────────────────────────────────────
196
+ 'C:\Windows\Fonts\NirmalaUI.ttf',
197
+ 'C:\Windows\Fonts\NirmalaUI-Bold.ttf',
198
+ 'C:\Windows\Fonts\mangal.ttf',
199
+ 'C:\Windows\Fonts\Aparajita.ttf',
200
  ]
201
 
202
  for font_path in font_paths: