Spaces:
Sleeping
Sleeping
added font path for HF Spaces
Browse files- Dockerfile +4 -3
- 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,
|
| 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 |
-
#
|
|
|
|
| 165 |
'/app/fonts/Kalimati.ttf',
|
| 166 |
-
#
|
| 167 |
'/usr/local/share/fonts/nepali/Kalimati.ttf',
|
| 168 |
-
# Local
|
| 169 |
os.path.join(BASE_DIR, 'fonts', 'Kalimati.ttf'),
|
|
|
|
| 170 |
'fonts/Kalimati.ttf',
|
| 171 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 172 |
'/System/Library/Fonts/Supplemental/DevanagariSangamMN.ttc',
|
| 173 |
-
|
| 174 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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:
|