Rinse rice briefly in a sieve and drain, shaking sieve to remove excess water. Bring rice and 1 1/2 cups water to a boil in a 1 1/2- to 2-quart heavy saucepan over high heat, then cover pan with a tight-fitting lid and cook rice over low heat until water is absorbed and rice is tender, about 15 minutes.
Meanwhile, cook onion in oil in a wide 4-quart heavy pot over moderately high heat, stirring occasionally, until pale golden, about 3 minutes. Reduce heat to moderate, then add garlic and curry paste and cook, stirring, 1 minute. Stir in coconut milk, salt, and remaining 1/4 cup water and bring to a boil. Stir in vegetables and return to a boil. Cover pot, then reduce heat and cook at a brisk simmer, stirring occasionally, 2 minutes. Gently stir in tofu and simmer curry, partially covered, until vegetables are tender, 7 to 8 minutes. Remove pot from heat and stir in fish sauce and salt to taste. Serve curry with rice.